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: generating year for a given age


From   Austin Nichols <[email protected]>
To   [email protected]
Subject   Re: st: RE: generating year for a given age
Date   Tue, 4 May 2010 17:51:03 -0400

Debs Majumdar <[email protected]> :
Assuming the dates are in standard US format MMDDYYYY (but missing any
leading zero), some of those ages look pretty implausible, but try
this for an improved birth date calculation:

clear all
inp byte id str13 dateint age_bl
 1    "7242003"   81.00753
 2    "6132003"   89.99042
 3    "4222004"   84.70363
 4   "10192005"   71.01163
 5    "9042003"   65.36345
end
qui compress
qui destring, replace
g inty=dateint-1e4*floor(dateint/1e4)
g intm=floor(dateint/1e6)
g intd=floor(dateint/1e4)-intm*100
gen d=mdy(intm,intd,inty)
format d %tdMon_DD,_CCYY
g b=d-round((age_bl-floor(age_bl))*(mdy(12,31,inty-1)-mdy(1,1,inty-1)+1))
format b %tdMon_DD,_CCYY
la var b "Last birthday"
g bd=mdy(month(b),day(b),inty-floor(age_bl))
format bd %tdMon_DD,_CCYY
la var bd "Birth date"
g testage=(d-bd)/365.25
gen yearwhenforty=yofd(bd+40*365.25)
l


On Tue, May 4, 2010 at 5:45 PM, Martin Weiss <[email protected]> wrote:
>
> <>
>
> Sorry, but what is the bottom line now? Reversed or not reversed?
>
>
> HTH
> Martin
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Debs Majumdar
> Sent: Dienstag, 4. Mai 2010 23:43
> To: [email protected]
> Subject: Re: st: RE: generating year for a given age
>
> My mistake. I just wrote down what the data manager told me. I should have
> looked into the dataset before I answered Martin's question.
>
>  debs
>
>
> ----- Original Message ----
> From: Martin Weiss <[email protected]>
> To: [email protected]
> Sent: Tue, May 4, 2010 2:29:37 PM
> Subject: RE: st: RE: generating year for a given age
>
>
> <>
>
>
> " I don't think characters are reversed--see obs 4 in the original output:"
>
>
> This observation prompted me to ask Debs, and he should know. I thought he
> put the "1" in there erroneously, but I may be wrong. If so, Debs should say
> so.
>
>
>
> HTH
> Martin
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Austin Nichols
> Sent: Dienstag, 4. Mai 2010 23:26
> To: [email protected]
> Subject: Re: st: RE: generating year for a given age
>
> Debs Majumdar <[email protected]> :
> I don't think characters are reversed--see obs 4 in the original output:
>
> clear all
> inp byte id str13 dateint age_bl
> 1    "7242003"   81.00753
> 2    "6132003"   89.99042
> 3    "4222004"   84.70363
> 4   "10192005"   71.01163
> 5    "9042003"   65.36345
> end
> qui compress
> qui destring, replace
> g inty=dateint-1e4*floor(dateint/1e4)
> g intm=floor(dateint/1e6)
> g intd=floor(dateint/1e4)-intm*100
> gen d=mdy(intm,intd,inty)
> format d %tdMon_DD,_CCYY
> gen birthday=d-age_bl*365
> format birthday %td
> gen yearwhenforty=yofd(birthday+40*365.25)
> l
>
>
> On Tue, May 4, 2010 at 5:18 PM, Debs Majumdar <[email protected]> wrote:
>> Thanks. And I am going to look into the date_and_times just to be thorough
> when generating then new variables. Yes, you are correct about the reverse
> characters.
>>
>> Debs
>>
>>
>>
>> ----- Original Message ----
>> From: Martin Weiss <[email protected]>
>> To: [email protected]
>> Sent: Tue, May 4, 2010 1:56:22 PM
>> Subject: st: RE: generating year for a given age
>>
>>
>> <>
>>
>> This is a cheap first shot. You want to dig deeper into -help
>> dates_and_times- to get all the leap years and stuff into this. Am I
> correct
>> that your "dateint" has the first two characters reversed?
>>
>> ***********
>> clear*
>>
>> inp byte id str13 dateint age_bl
>> 1    "7242003"   81.00753
>> 2    "6132003"   89.99042
>> 3    "4222004"   84.70363
>> 4    "1092005"   71.01163
>> 5    "9042003"   65.36345
>> end
>>
>> compress
>> list, noo
>>
>> gen str15 newdate= /*
>> */ reverse(substr(dateint,1,2))+ " " + /*
>> */ substr(dateint,3,1)+ " " +substr(dateint,4,.)
>> gen mydate=date(newdate, "DMY")
>> form mydate %tdMon_DD,_CCYY
>> drop dateint newdate
>>
>> gen birthday=mydate-age_bl*365
>> format birthday %td
>> gen yearwhenforty=yofd(birthday+40*365)
>> l
>> ***********
>>
>>
>> HTH
>> Martin
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of Debs Majumdar
>> Sent: Dienstag, 4. Mai 2010 22:38
>> To: [email protected]
>> Subject: st: generating year for a given age
>>
>> Hi,
>>
>>   I have a dataset  where I have the date of interview and the
>> corresponding age at that time (age_bl). I want to create two variables of
>> of this: 1) date of birth and 2) year when age was 40 for the
> participants.
>>
>>      | id     dateint       age_bl   |
>>      |--------------------------------------|
>>  1. |  1    7242003   81.00753  |
>>  2. |  2    6132003   89.99042  |
>>  3. |  3    4222004   84.70363  |
>>  4. |  4   10192005   71.01163 |
>>  5. |  5    9042003   65.36345  |
>>     +-------------------------------------+
>>
>>
>>  How would I do that?
>>
>>  Thanks,
>>
>>   Debs

*
*   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