Statalist The Stata Listserver


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: RE: gen new variable, dealing with prefix codes


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: RE: RE: gen new variable, dealing with prefix codes
Date   Tue, 27 Jun 2006 22:17:14 +0100

A few misprints on second reading, but
I think the spirit is correct. 

Nick 
n.j.cox@durham.ac.uk 

> -----Original Message-----
> From: owner-statalist@hsphsun2.harvard.edu
> [mailto:owner-statalist@hsphsun2.harvard.edu]On Behalf Of Nick Cox
> Sent: 27 June 2006 21:58
> To: statalist@hsphsun2.harvard.edu
> 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 
> n.j.cox@durham.ac.uk 
> 
> 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/



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