SAS,计算行差

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,

我有两列数据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
,那是第一个月?当前是同一
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;