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: Carry forward


From   Roberto Ferrer <refp16@gmail.com>
To   Stata Help <statalist@hsphsun2.harvard.edu>
Subject   Re: st: Carry forward
Date   Sun, 6 Oct 2013 19:07:23 +0100

Tina,

You may want to take a look at this discussion and links within:

http://www.stata.com/statalist/archive/2013-08/msg01121.html

Bests,
Roberto

On Sun, Oct 6, 2013 at 2:41 PM, David Kantor <kantor.d@att.net> wrote:
> At 12:21 AM 10/4/2013, Tina wrote:
>>
>> Hi All,
>>
>> I am having some problems with carryforward and I wanted to see if =
>> anyone else knows of any problems with this command.
>>
>> I have a panel dataset that I have created and I want to use the =
>> carryforward command to fill in missing values. =20
>>
>> . tsset id enroll
>>
>>       panel variable:  id (unbalanced)
>>
>>        time variable:  enroll, 1 to 3, but with gaps
>>
>>                delta:  1 unit
>>
>> . tsfill,full
>>
>> . replace nvisits_year =3D 0 if nvisits_year =3D=3D .
>>
>> (1517200 real changes made)
>>
>> . **fill in missing data**
>>
>> . bysort id: carryforward age, gen(age_1)
>>
>> age_1:  (1517200 real changes made)
>>
>>
>> . bysort id: carryforward pay, gen (pay_cf)
>>
>> pay_cf:  (1516900 real changes made)
>>
>>
>> . replace age_1 =3D age_1 + 1 if age=3D=3D.
>>
>> (1517200 real changes made)
>>
>>
>>
>> I have reloaded the raw data files and ran my exact same do file, =
>> however I get different results every time I run the code:
>>
>>
>> . tsset id enroll
>>
>>       panel variable:  id (unbalanced)
>>
>>        time variable:  enroll, 1 to 3, but with gaps
>>
>>                delta:  1 unit
>>
>> . tsfill,full
>>
>> . replace nvisits_year =3D 0 if nvisits_year =3D=3D .
>>
>> (1517200 real changes made)
>>
>> . **fill in missing data**
>>
>> . bysort id: carryforward age, gen(age_1)
>>
>> age_1:  (1517200 real changes made)
>>
>> . bysort id: carryforward pay, gen (pay_cf)
>>
>> pay_cf:  (1516901 real changes made)
>>
>> . replace age_1 =3D age_1 + 1 if age=3D=3D.
>>
>> (1517200 real changes made)
>>
>> =20
>> And the third time I run the code:
>>
>> . bysort id: carryforward pay, gen (pay_cf)
>> pay_cf:  (1516894 real changes made)
>>
>>
>> Any help on what might be happening to the datafile and why the changes =
>> are not the same each time I run the code?
>>
>> Thanks
>>
>> Tina
>
>
> Does -id- uniquely identify the observations? (Does sorting on it yield a
> unique order?) I don't think so. Based on what you have written, you need to
> combine it with -enroll-.
> Thus,
> bysort id (enroll): carryforward pay...
>
> Actually, you need to be sure that the combination of the two variables
> uniquely identifies observations. For that, you can use -assertky- (from
> SSC) or -isid- (standard Stata). Thus,
> assertky id enroll
> or
> isid id enroll, sort
>
> --followed by
> by id (enroll): carryforward pay...
>
> Note that in this situation, you can just use -by-; no need for -bysort-.
>
> Generally, -carryforward- requires a "secondary" set of sorting variables to
> obtain consistent and meaningful results.
> This is stated in the help. But your inquiry has prompted me to add a
> warning feature into -carryforward-.
> HTH
> --David
>
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index