2016-11-15 63 views
-1

我有不同年龄的测量标题。它看起来像这样: enter image description here如何从第一行减去每个主题的行?

Subject Gender Datasource MHGCAT_COD_4 MHGCAT_COD_6 MHGCAT_COD_11 age_ga 
124  1  1   21   122   1212   38 
124  1  1   21   122   1212   39 
124  1  1   21   122   1212   41 
124  1  1   21   122   1212   43 
125  1  1   21   122   1212   33 
125  1  1   21   122   1212   38 

我想创建一个额外的列,计算如下:

Subject Gender Datasource MHGCAT_COD_4 MHGCAT_COD_6 MHGCAT_COD_11 age_ga window 
124  1  1   21   122   1212   38  0 
124  1  1   21   122   1212   39  1 
124  1  1   21   122   1212   41  3 
124  1  1   21   122   1212   43  5 
125  1  1   21   122   1212   33  0 
125  1  1   21   122   1212   38  5 

我使用SAS来做到这一点。谢谢!

附加图片以防格式变乱。

+0

更详细地解释新变量的逻辑。显示您尝试的代码。 – Tom

+0

新变量将第一个age_ga值作为基线,之后的所有其他值都是后基线。数据已经按age_ga排序。我减去了第2行 - 第1行,但是我不能要求代码在每个新的主题ID上重新开始循环来做同样的事情。所以,窗口,行1 = 0..window,行2 = age_ga行2 - age_ga行1 .....窗口,行5 = 0,窗口行6 = age_ga行6 - age_ga行5 .. –

回答

0

使用BY变量处理。

data want ; 
    set have ; 
    by subject age_ga ; 
    if first.subject then index_age = age_ga ; 
    retain index_age ; 
    window = age_ga - index_age; 
run; 
+0

这工作!删除index_age而不是保留index_age会很好。感谢您的解决方案! –

相关问题