Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[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 <njcoxstata@gmail.com>
To   "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu>
Subject   Re: st: RE: extract rownames corresponding to data as unique codes
Date   Thu, 4 Aug 2011 07:36:50 +0100

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 <joodyu@gmail.com> 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 <njcoxstata@gmail.com>:
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 <joodyu@gmail.com> 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 <njcoxstata@gmail.com>:

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 <joodyu@gmail.com> 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 <joodyu@gmail.com>

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 <n.j.cox@durham.ac.uk>:

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
n.j.cox@durham.ac.uk

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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index