Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: RE: extract rownames corresponding to data as unique codes


From   Nick Cox <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: RE: extract rownames corresponding to data as unique codes
Date   Sun, 7 Aug 2011 08:56:48 +0100

I have traced my original suggestion of code to 11 July:

<http://www.hsph.harvard.edu/cgi-bin/lwgate/STATALIST/archives/statalist.1107/date/article-409.html>

In that I spell out that Judy's rownames appeared to be all numeric,
so the initialisation

gen rowname = .

would be fine. But if that is not correct, the variable should clearly
be created as string.

gen rowname = ""

On Fri, Aug 5, 2011 at 7:40 AM, Nick Cox <[email protected]> wrote:
> This code initialises -rowname-as numeric, as I pointed out in my last
> message. I've lost track of whether that was my suggestion, but it remains
> my best guess at your problem.
>
> On 5 Aug 2011, at 01:31, Judy You <[email protected]> wrote:
>
>> Nick here is the command i used suggested by you. Thanks for your
>> patience!
>>
>> Cheers
>>
>> use data, clear
>> destring sla,replace
>> qui dstdize deaths pop sex agegp, by(sla) using (t0)
>> drop _all
>> return list
>> matrix C = r(crude)', r(adj)', r(lb)' , r(ub)'
>> svmat C, names(col)
>>
>> gen rowname = .
>> qui forval i = 1/95 {
>>     replace rowname = r(c`i') in `i'
>> }
>>
>>
>> Whether i destring sla or not, it doesn't make any difference. So the
>> error message happened after forval loope.
>>
>> Cheers
>>
>> Judy
>>
>>
>>
>>> ---------- Forwarded message ----------
>>> From: Nick Cox <[email protected]>
>>> Date: 2011/8/4
>>> Subject: Re: st: RE: extract rownames corresponding to data as unique
>>> codes
>>> To: "[email protected]" <[email protected]>
>>>
>>>
>>> Thanks, but the problem is inside the -forval- loop and that code is
>>> (again) not given by you, Perhaps you are trying to put   strings
>>> inside a numeric variable, or vice versa, or something similar. I
>>> guess that your -rowname- should not be initialised to numeric
>>> missings.
>>>
>>> Nick
>>>
>>> On 4 Aug 2011, at 00:36, Judy You <[email protected]> wrote:
>>>
>>>> ok, i see.
>>>>
>>>> here is the log file with commands and results.
>>>>
>>>> Thanks for your attention again!
>>>>
>>>> Cheers
>>>>
>>>> Judy
>>>>
>>>>
>>>> . use data, clear
>>>>
>>>> . destring sla,replace
>>>> sla has all characters numeric; replaced as int
>>>>
>>>> . qui dstdize deaths pop sex agegp, by(sla) using (t0)
>>>>
>>>> . drop _all
>>>>
>>>> . return list
>>>>
>>>> scalars:
>>>>                r(k) =  95
>>>>
>>>> macros:
>>>>               r(by) : "sla"
>>>>              r(c95) : "`"5050"'"
>>>>              r(c94) : "`"5000"'"
>>>> ------
>>>>               r(c4) : "`"207"'"
>>>>               r(c3) : "`"205"'"
>>>>               r(c2) : "`"203"'"
>>>>               r(c1) : "`"201"'"
>>>>
>>>> matrices:
>>>>               r(se) :  1 x 95
>>>>               r(ub) :  1 x 95
>>>>               r(lb) :  1 x 95
>>>>              r(adj) :  1 x 95
>>>>            r(crude) :  1 x 95
>>>>             r(Nobs) :  1 x 95
>>>>
>>>> . matrix C = r(crude)', r(adj)', r(lb)' , r(ub)'
>>>>
>>>> . svmat C, names(col)
>>>> number of observations will be reset to 95
>>>> Press any key to continue, or Break to abort
>>>> obs was 0, now 95
>>>>
>>>> .
>>>> . gen rowname = .
>>>> (95 missing values generated)
>>>>
>>>> . qui forval i = 1/95 {
>>>> type mismatch
>>>> r(109);
>>>>
>>>> end of do-file
>>>>
>>>> r(109);
>>>>
>>>>
>>>>
>>>>
>>>> 2011/8/3 Nick Cox <[email protected]>:
>>>>>
>>>>> Sorry, Judy, but this is not what was asked for. To understand an error
>>>>> message, it helps to see the code, meaning Stata commands, that was
>>>>> typed.
>>>>>
>>>>> Nick
>>>>>
>>>>> On 3 Aug 2011, at 01:08, Judy You <[email protected]> wrote:
>>>>>
>>>>>> Dear Nick:
>>>>>>
>>>>>> Sorry, i have not included the whole list of codes in my first email,
>>>>>> only with selected codes.
>>>>>>
>>>>>> Here are the complete list, and your help is much appreciated indeed.
>>>>>>
>>>>>>
>>>>>> macros:
>>>>>>              r(by) : "sla"
>>>>>>             r(c95) : "`"5050"'"
>>>>>>             r(c94) : "`"5000"'"
>>>>>>             r(c93) : "`"4809"'"
>>>>>>             r(c92) : "`"4700"'"
>>>>>>             r(c91) : "`"4650"'"
>>>>>>             r(c90) : "`"4600"'"
>>>>>>             r(c89) : "`"4409"'"
>>>>>>             r(c88) : "`"4050"'"
>>>>>>             r(c87) : "`"4030"'"
>>>>>>             r(c86) : "`"4020"'"
>>>>>>             r(c85) : "`"4009"'"
>>>>>>             r(c84) : "`"3800"'"
>>>>>>             r(c83) : "`"3650"'"
>>>>>>             r(c82) : "`"3609"'"
>>>>>>             r(c81) : "`"3409"'"
>>>>>>             r(c80) : "`"3309"'"
>>>>>>             r(c79) : "`"3209"'"
>>>>>>             r(c78) : "`"3030"'"
>>>>>>             r(c77) : "`"3009"'"
>>>>>>             r(c76) : "`"2824"'"
>>>>>>             r(c75) : "`"2818"'"
>>>>>>             r(c74) : "`"2814"'"
>>>>>>             r(c73) : "`"2811"'"
>>>>>>             r(c72) : "`"2808"'"
>>>>>>             r(c71) : "`"2806"'"
>>>>>>             r(c70) : "`"2804"'"
>>>>>>             r(c69) : "`"2802"'"
>>>>>>             r(c68) : "`"2530"'"
>>>>>>             r(c67) : "`"2500"'"
>>>>>>             r(c66) : "`"2409"'"
>>>>>>             r(c65) : "`"2380"'"
>>>>>>             r(c64) : "`"2360"'"
>>>>>>             r(c63) : "`"2340"'"
>>>>>>             r(c62) : "`"2320"'"
>>>>>>             r(c61) : "`"2308"'"
>>>>>>             r(c60) : "`"2304"'"
>>>>>>             r(c59) : "`"2270"'"
>>>>>>             r(c58) : "`"2240"'"
>>>>>>             r(c57) : "`"2200"'"
>>>>>>             r(c56) : "`"2100"'"
>>>>>>             r(c55) : "`"2000"'"
>>>>>>             r(c54) : "`"1909"'"
>>>>>>             r(c53) : "`"1809"'"
>>>>>>             r(c52) : "`"1609"'"
>>>>>>             r(c51) : "`"1409"'"
>>>>>>             r(c50) : "`"1350"'"
>>>>>>             r(c49) : "`"1209"'"
>>>>>>             r(c48) : "`"1169"'"
>>>>>>             r(c47) : "`"1138"'"
>>>>>>             r(c46) : "`"1134"'"
>>>>>>             r(c45) : "`"1128"'"
>>>>>>             r(c44) : "`"1124"'"
>>>>>>             r(c43) : "`"1118"'"
>>>>>>             r(c42) : "`"1114"'"
>>>>>>             r(c41) : "`"1108"'"
>>>>>>             r(c40) : "`"1104"'"
>>>>>>             r(c39) : "`"1098"'"
>>>>>>             r(c38) : "`"1094"'"
>>>>>>             r(c37) : "`"1088"'"
>>>>>>             r(c36) : "`"1084"'"
>>>>>>             r(c35) : "`"1078"'"
>>>>>>             r(c34) : "`"1074"'"
>>>>>>             r(c33) : "`"1068"'"
>>>>>>             r(c32) : "`"1064"'"
>>>>>>             r(c31) : "`"1058"'"
>>>>>>             r(c30) : "`"1054"'"
>>>>>>             r(c29) : "`"1052"'"
>>>>>>             r(c28) : "`"1048"'"
>>>>>>             r(c27) : "`"1044"'"
>>>>>>             r(c26) : "`"1038"'"
>>>>>>             r(c25) : "`"1034"'"
>>>>>>             r(c24) : "`"1028"'"
>>>>>>             r(c23) : "`"1024"'"
>>>>>>             r(c22) : "`"1018"'"
>>>>>>             r(c21) : "`"1014"'"
>>>>>>             r(c20) : "`"1011"'"
>>>>>>             r(c19) : "`"1008"'"
>>>>>>             r(c18) : "`"1004"'"
>>>>>>             r(c17) : "`"809"'"
>>>>>>             r(c16) : "`"790"'"
>>>>>>             r(c15) : "`"770"'"
>>>>>>             r(c14) : "`"759"'"
>>>>>>             r(c13) : "`"700"'"
>>>>>>             r(c12) : "`"600"'"
>>>>>>             r(c11) : "`"570"'"
>>>>>>             r(c10) : "`"540"'"
>>>>>>              r(c9) : "`"400"'"
>>>>>>              r(c8) : "`"360"'"
>>>>>>              r(c7) : "`"330"'"
>>>>>>              r(c6) : "`"300"'"
>>>>>>              r(c5) : "`"208"'"
>>>>>>              r(c4) : "`"207"'"
>>>>>>              r(c3) : "`"205"'"
>>>>>>              r(c2) : "`"203"'"
>>>>>>              r(c1) : "`"201"'"
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Cheers
>>>>>>
>>>>>> Judy
>>>>>> 2011/8/2 Nick Cox <[email protected]>:
>>>>>>>
>>>>>>> You don't show the exact code you used to provoke such an error
>>>>>>> message.
>>>>>>>
>>>>>>> Nick
>>>>>>>
>>>>>>> On 2 Aug 2011, at 02:12, Judy You <[email protected]> wrote:
>>>>>>>
>>>>>>>> Dear Nick,
>>>>>>>>
>>>>>>>> i have tried your command, it gives me error message.
>>>>>>>>
>>>>>>>> matrices:
>>>>>>>>             r(se) :  1 x 95
>>>>>>>>             r(ub) :  1 x 95
>>>>>>>>             r(lb) :  1 x 95
>>>>>>>>            r(adj) :  1 x 95
>>>>>>>>          r(crude) :  1 x 95
>>>>>>>>           r(Nobs) :  1 x 95
>>>>>>>> number of observations will be reset to 95
>>>>>>>> Press any key to continue, or Break to abort
>>>>>>>> obs was 0, now 95
>>>>>>>> (95 missing values generated)
>>>>>>>> type mismatch
>>>>>>>> r(109);
>>>>>>>>
>>>>>>>> end of do-file
>>>>>>>>
>>>>>>>> r(109);
>>>>>>>>
>>>>>>>> What i like to have SLAs (area codes) maintain the original source
>>>>>>>> (numeric format),eg., sla=201, 203 205 --- 4809, 5000 5050 etc..
>>>>>>>> instead of 1 to 95.
>>>>>>>>
>>>>>>>> Cheers
>>>>>>>>
>>>>>>>> Judy
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> 2011/7/13 Judy You <[email protected]>
>>>>>>>>>
>>>>>>>>> Thanks Nick for your promptous response. SLA is an area code. Since
>>>>>>>>> i
>>>>>>>>> am away and have no stata program in my hand, i ccouldn't try to
>>>>>>>>> run
>>>>>>>>> it now, but i trust it will work fine.
>>>>>>>>>
>>>>>>>>> Cheers
>>>>>>>>>
>>>>>>>>> Judy
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2011/7/11 Nick Cox <[email protected]>:
>>>>>>>>>>
>>>>>>>>>> I don't know what SLAs are.
>>>>>>>>>>
>>>>>>>>>> In your case, the row names, originally column names, are
>>>>>>>>>> apparently
>>>>>>>>>> all
>>>>>>>>>> numbers, so you should be able to loop over the names and store
>>>>>>>>>> them
>>>>>>>>>> in a
>>>>>>>>>> variable (_not_ column) something like this:
>>>>>>>>>>
>>>>>>>>>> qui dstdize freq pop sex agegp, by(sla) using (t0)
>>>>>>>>>>
>>>>>>>>>> drop _all
>>>>>>>>>> return list
>>>>>>>>>> matrix C = r(crude)', r(adj)', r(lb)' , r(ub)'
>>>>>>>>>> svmat C, names(col)
>>>>>>>>>>
>>>>>>>>>> gen rowname = .
>>>>>>>>>> qui forval i = 1/95 {
>>>>>>>>>>    replace rowname = r(c`i') in `i'
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> Nick
>>>>>>>>>> [email protected]
>>>>>>>>>>
>>>>>>>>>> Judy You
>>>>>>>>>>
>>>>>>>>>> I am running a "dstdize" age-standardised rate syntax and got a
>>>>>>>>>> result
>>>>>>>>>> with Crude and age-adjusted rate, together with lower and upper
>>>>>>>>>> limit.
>>>>>>>>>>
>>>>>>>>>> The age adjusted rate is reported by SLA level (which there are 95
>>>>>>>>>> rows or records). I have save the matrix in a file but the result
>>>>>>>>>> doesn't come along with SLA code. I could force it to do by merge
>>>>>>>>>> the
>>>>>>>>>> predefined file with sla code to the one saved in the matrix. I
>>>>>>>>>> believer there should be the smart way to do.
>>>>>>>>>>
>>>>>>>>>> Here is my log file. Thanks for your help in advance!
>>>>>>>>>>
>>>>>>>>>> ----------
>>>>>>>>>>
>>>>>>>>>> . qui dstdize freq pop sex agegp, by(sla) using (t0)
>>>>>>>>>>
>>>>>>>>>> . drop _all
>>>>>>>>>>
>>>>>>>>>> . return list
>>>>>>>>>>
>>>>>>>>>> scalars:
>>>>>>>>>>              r(k) =  95
>>>>>>>>>>
>>>>>>>>>> macros:
>>>>>>>>>>             r(by) : "sla"
>>>>>>>>>>            r(c95) : "`"5050"'"
>>>>>>>>>>            r(c94) : "`"5000"'"
>>>>>>>>>>            r(c93) : "`"4809"'"
>>>>>>>>>> ------
>>>>>>>>>>             r(c3) : "`"205"'"
>>>>>>>>>>             r(c2) : "`"203"'"
>>>>>>>>>>             r(c1) : "`"201"'"
>>>>>>>>>>
>>>>>>>>>> matrices:
>>>>>>>>>>             r(se) :  1 x 95
>>>>>>>>>>             r(ub) :  1 x 95
>>>>>>>>>>             r(lb) :  1 x 95
>>>>>>>>>>            r(adj) :  1 x 95
>>>>>>>>>>          r(crude) :  1 x 95
>>>>>>>>>>           r(Nobs) :  1 x 95
>>>>>>>>>>
>>>>>>>>>> . matrix C = r(crude)', r(adj)', r(lb)' , r(ub)'
>>>>>>>>>>
>>>>>>>>>> . svmat C, names(col)
>>>>>>>>>> number of observations will be reset to 95 Press any key to
>>>>>>>>>> continue,
>>>>>>>>>> or Break to abort obs was 0, now 95
>>>>>>>>>>
>>>>>>>>>> . save t1,replace
>>>>>>>>>> file t1.dta saved
>>>>>>>>>>
>>>>>>>>>> Crude   Adjusted        Left    Right
>>>>>>>>>> .0144418        .0213993        .0160632        .0267354
>>>>>>>>>> .0242798        .0409689        .030746 .0511917
>>>>>>>>>> .0123417        .0186174        .0149574        .0222773
>>>>>>>>>> .0097357        .0142612        .0108197        .0177028
>>>>>>>>>> .0260393        .051086 .0389991        .0631729
>>>>>>>>>>
>>>>>>>>>> -----
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> The saved file looks like that, but what I like is to have a
>>>>>>>>>> column
>>>>>>>>>> named as SLA, corresponding to the SLA codes in the original data.
>>>>>>>>>> Could any expert give me some hint?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>> *
>>>>> *   For searches and help try:
>>>>> *   http://www.stata.com/help.cgi?search
>>>>> *   http://www.stata.com/support/statalist/faq
>>>>> *   http://www.ats.ucla.edu/stat/stata/
>>>>>
>>>>
>>>> *
>>>> *   For searches and help try:
>>>> *   http://www.stata.com/help.cgi?search
>>>> *   http://www.stata.com/support/statalist/faq
>>>> *   http://www.ats.ucla.edu/stat/stata/
>>>
>>> *
>>> *   For searches and help try:
>>> *   http://www.stata.com/help.cgi?search
>>> *   http://www.stata.com/support/statalist/faq
>>> *   http://www.ats.ucla.edu/stat/stata/
>>>
>>
>> *
>> *   For searches and help try:
>> *   http://www.stata.com/help.cgi?search
>> *   http://www.stata.com/support/statalist/faq
>> *   http://www.ats.ucla.edu/stat/stata/
>

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index