| |
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: RE: RE: gen new variable, dealing with prefix codes
A few misprints on second reading, but
I think the spirit is correct.
Nick
[email protected]
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]]On Behalf Of Nick Cox
> Sent: 27 June 2006 21:58
> To: [email protected]
> Subject: st: RE: gen new variable, dealing with prefix codes
>
>
> Many listers get flak for vague, circuitous or otherwise
> unanswerable questions. This is a model of clarity!
>
> I guess that when you say "byte" you mean "digit".
> I also note that if this is the case then nobody dies at age
> 100 or above.
>
> I will call your variable -ndeath-.
>
> It will be convenient to convert this to a string by
>
> gen sdeath = string(ndeath)
>
> Death in years is given by
>
> gen ydeath = real(substr(sdeath,2,.)) if substr(sdeath,1,1) == "1"
>
> which will be missing for deaths below 1 year.
>
> Death in months is given by
>
> gen mdeath = real(substr(sdeath,2,.)) if substr(sdeath,1,1) == "2"
>
> which will be missing for deaths at or above 1 year or below 1 month.
>
> Death in days is given by
>
> gen mdeath = real(substr(sdeath,2,.)) if substr(sdeath,1,1) == "3"
>
> which will be missing for deaths at or above 1 month.
>
> And so on.
>
> Those might be useful for later applications. For example,
> you might want a combined variable which could be
>
> gen death = cond(ydeath < ., ydeath, 0) + cond(mdeath < .,
> mdeath/12, 0)
> + cond(ddeath < . , ddeath / 365.25, 0)
>
> with extra terms for the other variables.
>
> Your classification is
>
> gen myclass = 1 if substr(sdeath,1,1) != "1"
> replace myclass = 2 if ndeath < 5
> replace myclass = 3 if ndeath < 15 & missing(myclass)
>
> and other commands like the last.
>
> And the moral is:
>
> The functions are your friends.
> Browse in the help for -functions-.
>
> Nick
> [email protected]
>
> LaVera Crawley
>
> > I am working with a 3 byte numeric variable of age at death
> where the
> > first integer (prefix) codes whether the next 2 integers are in
> > years, months, days, hours, or minutes. So it lists age in years
> > as 1 + years; It lists months as 2 + months; days are 3 + days
> > etc. For example, a person who died at 59 years of age is coded as
> > 159; a child who died at 3 months of age is coded as 203;
> death at 4
> > days is 304; death 6 hours after birth is 406; etc.
> >
> > I need to convert this to the following 11 age intervals in years:
> > 0 to less than 1;
> > 1 to 4;
> > 5 to 14;
> > 15 to 24;
> > 25 to 34;
> > continuing 10 year intervals up to 85+.
> >
> > I am having trouble creating a stata command for this
> because of how
> > the bytes are set up (because of the prefix month, day, hour, &
> > minute integers.) Please help!
>
> *
> * For searches and help try:
> * http://www.stata.com/support/faqs/res/findit.html
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
>
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/