Arrays 每个主题如何从第一行减去行?
我有在不同年龄测量的受试者ID。看起来是这样的: 我想创建一个额外的列,计算如下:Arrays 每个主题如何从第一行减去行?,arrays,sas,rows,subtraction,Arrays,Sas,Rows,Subtraction,我有在不同年龄测量的受试者ID。看起来是这样的: 我想创建一个额外的列,计算如下: 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
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来完成此操作。谢谢
附加图像,以防格式失控。由变量处理使用
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;
更详细地解释新变量的逻辑。显示您尝试过的代码。新变量将第一个age_ga值作为基线,之后的所有其他值都是post-baseline。数据已经按年龄进行了排序。我减去了第2行-第1行,但我不能要求代码在每个新的主题id处再次开始循环,以执行相同的操作。所以,窗口,第1行=0..窗口,第2行=age_ga第2行-age_ga第1行..窗口,第5行=0,窗口第6行=age_ga第6行-age_ga第5行..这很有效!最好是删除索引,而不是保留它。谢谢你的解决方案!
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;