SAS,计算行差
我有两列数据ID和月份。列1是ID,同一ID可以有多行(1-5)。第二列是登记月份。我想创建第三列。它计算每个ID的当前月份和初始月份之间的差值。您可以这样做SAS,计算行差,sas,row,difference,Sas,Row,Difference,我有两列数据ID和月份。列1是ID,同一ID可以有多行(1-5)。第二列是登记月份。我想创建第三列。它计算每个ID的当前月份和初始月份之间的差值。您可以这样做 data test; input ID month d_month; datalines; 1 59 0 1 70 11 1 80 21 2 10 0 2 11 1 2 13 3 3 5 0 3 9 4 4 8 0 ; run; Krs您是否尝试过先使用功能。功能?您所说的最初月份是指第一个月?那么你的意思是我第一次看到ID,
data test;
input ID month d_month;
datalines;
1 59 0
1 70 11
1 80 21
2 10 0
2 11 1
2 13 3
3 5 0
3 9 4
4 8 0
;
run;
Krs您是否尝试过先使用
功能。
功能?您所说的最初月份是指第一个月?那么你的意思是我第一次看到ID
,那是第一个月?当前是同一ID
的最后一次观察?请确保包括您尝试过的任何内容以及您的问题。d_月与calc_月不匹配。计算月的第二个值应该是11(70-59),而不是48。在第二个数据步骤中,将calc\u month=
替换为calc\u month=month-current\u month
,那么它将是正确的。
data test;
input ID month d_month;
datalines;
1 59 0
1 70 11
1 80 21
2 10 0
2 11 1
2 13 3
3 5 0
3 9 4
4 8 0
;
run;
data calc;
set test;
by id;
retain current_month;
if first.id then do;
current_month=month;
calc_month=0;
end;
if ^first.id then do;
calc_month = month - current_month ;
end;
run;