Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 每个主题如何从第一行减去行?_Arrays_Sas_Rows_Subtraction - Fatal编程技术网

Arrays 每个主题如何从第一行减去行?

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

我有在不同年龄测量的受试者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          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;