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]

st: Changing values future time points conditional on value from prior time point


From   "Kaufmann, Christopher N." <[email protected]>
To   "[email protected]" <[email protected]>
Subject   st: Changing values future time points conditional on value from prior time point
Date   Mon, 24 Feb 2014 16:50:06 -0500

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/


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