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

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

 From "Nick Cox" To Subject st: RE: gen new variable, dealing with prefix codes Date Tue, 27 Jun 2006 21:57:40 +0100

```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/
```

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