更新了Stata中的曝光变量

时间:2014-03-11 03:12:06

标签: stata

我正在尝试通过4次研究访问为更新的体重指数(bmi)创建一个变量。我已经尝试了以下但它只列出了上次访问的价值。如果参与者在访问1时出现visit_v1 = 1,在访问1时出现bmi_v1 = bmi,我的数据格式为bmi_su。如果bmi_v1,我希望visit_v1=1等于bmi_v2 if visit_v2==1gen bmi_su = . replace bmi_su = bmi_v4 if visit_v4==1 replace bmi_su = bmi_v3 if visit_v3==1 & visit_v4==0 replace bmi_su = bmi_v2 if visit_v2==1 & visit_v4==0 & visit_v3==0 replace bmi_su = bmi_v1 if visit_v1==1 & visit_v4==0 & visit_v3==0 & visit_v2==0 等。我出错的任何想法?

{{1}}

2 个答案:

答案 0 :(得分:0)

你是否寻求这样的事情:

. clear all

. set more off

. 
. * Assumed data structure
. input ///
> id bmi visit1 visit2 visit3 bmi1 bmi2 bmi3

            id        bmi     visit1     visit2     visit3       bmi1       bmi2       bmi3
  1. 1 20 1 0 0 20 0 0
  2. 1 . 0 1 0 0 25 0
  3. 1 . 0 0 1 0 0 28
  4. end

. 
. list, noobs

  +----------------------------------------------------------+
  | id   bmi   visit1   visit2   visit3   bmi1   bmi2   bmi3 |
  |----------------------------------------------------------|
  |  1    20        1        0        0     20      0      0 |
  |  1     .        0        1        0      0     25      0 |
  |  1     .        0        0        1      0      0     28 |
  +----------------------------------------------------------+

. 
. * What you want?
. gen bmisu = bmi1 + bmi2 + bmi3

. 
. list, noobs

  +------------------------------------------------------------------+
  | id   bmi   visit1   visit2   visit3   bmi1   bmi2   bmi3   bmisu |
  |------------------------------------------------------------------|
  |  1    20        1        0        0     20      0      0      20 |
  |  1     .        0        1        0      0     25      0      25 |
  |  1     .        0        0        1      0      0     28      28 |
  +------------------------------------------------------------------+

答案 1 :(得分:0)

在长数据结构或形状(有人说格式)中,面板或纵向数据通常要好得多。

在您的情况下,定义意味着最后一次测量将胜过早期测量,因此不清楚为什么您会感到惊讶。

以下是一些更系统的计算方法。首先,

gen bmi_su = bmi_v4 

forval j = 3(-1)1 { 
    replace bmi_su = bmi_v`j' if visit`j' 
} 

第二,

gen bmi_su2 = bmi_v1 

forval j = 2/4 { 
   replace bmi_su2 = bmi_v`j' if visit`j' 
}

还要考虑上面的变体if missing(bmi_su)if missing(bmi_su2),而不是显示的if条件。