Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Jeph Herrin <[email protected]> |
To | [email protected] |
Subject | Re: st: Changing values future time points conditional on value from prior time point |
Date | Mon, 24 Feb 2014 17:17:26 -0500 |
this should do bys id (time) : replace c_heartcond=1 if c_heartcond[_n-1]==1 cheers, Jeph On 2/24/2014 4:50 PM, Kaufmann, Christopher N. wrote:
I am working with data from a longitudinal cohort study with five time points. The dataset is formatted in a "long" format. I would like to change values of a variable for future time points conditional on the value of the variable in a prior time point. Below is an example of the structure of my dataset in its current form: ID Time c_heartcond 1 1 0 1 2 1 1 3 0 1 4 1 1 5 0 2 1 0 2 2 0 2 3 1 2 4 1 2 5 0 ID = participant identification number Time = time points of the study c_heartcond = participant reported that they have a heart condition since the last time they were interviewed (1 = yes, 0 = no) As you can see, a person can report a heart condition at one time point, but report that they didn’t have a heart condition the next time point. I would like to change the c_heartcond variable so that all future time points after the first that the subject reported the heart condition have a value of 1. For example: ID Time c_heartcond 1 1 0 1 2 1 1 3 1 1 4 1 1 5 1 2 1 0 2 2 0 2 3 1 2 4 1 2 5 1 I have written code to do this. See below: *Fixing comorbidity: foreach var of varlist c_heartcond c_stroke c_hypertension c_pain c_arthritis c_cancer c_diabetes c_incontin c_memorydis { if c_order_expand == 1 & `var' == 1 { foreach x1 in 2 3 4 5 { replace `var' = 1 if c_order_expand == `x1' } } if c_order_expand == 2 & `var' == 1 { foreach x2 in 3 4 5 { replace `var' = 1 if c_order_expand == `x2' } } if c_order_expand == 3 & `var' == 1 { foreach x3 in 4 5 { replace `var' = 1 if c_order_expand == `x3' } } if c_order_expand == 4 & `var' == 1 { foreach x4 in 5 { replace `var' = 1 if c_order_expand == `x4' } } else { replace `var' = `var' if c_order_expand == 5 } } But when browsing through the data after running this code, I notice that there are instances where this data is not formatted correctly. For example, the data might look like this after running my code: ID Time c_heartcond 3 1 1 3 2 0 3 3 0 3 4 0 3 5 0 Thank you for any help that you can provide. * * 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/