我有2列Start_date和end_date,对于一个特定的个体,start_date和End_date上有多个行,我想计算第二行的sTART_DATE --第一行的END_DATE之间的天数。
Person Start End
A 5/11/2019 9/11/2019 I need to get 14/11/2019-9/11/2019 = 4
A 14/11/2019 20/11/2019 Like wise 10
A 1/12/2019 10/12/2019 2
A 12/12/2019 19/12/2019 0
B 1/1/2018 5/1/2018 4
B 9/1/2018 11/1/2018 0发布于 2019-08-04 21:56:13
发布于 2019-08-05 08:52:19
您可以使用retain语句。算法的其余部分重复@Reeza解决方案:
proc sort data=have;
by person descending start;
run;
data want(drop=tStart);
set have;
by person;
retain tStart;
if not first.person then do;
diff = tStart-End;
end;
else do;
diff = 0;
end;
tStart = Start;
run;
proc sort data=want;
by person start;
run;输入:
+--------+-----------+-----------+
| Person | Start | End |
+--------+-----------+-----------+
| A | 12DEC2019 | 19DEC2019 |
| A | 01DEC2019 | 10DEC2019 |
| A | 14NOV2019 | 20NOV2019 |
| A | 05NOV2019 | 09NOV2019 |
| B | 09JAN2018 | 11JAN2018 |
| B | 01JAN2018 | 05JAN2018 |
+--------+-----------+-----------+输出:
+--------+-----------+-----------+------+
| Person | Start | End | diff |
+--------+-----------+-----------+------+
| A | 05NOV2019 | 09NOV2019 | 5 |
| A | 14NOV2019 | 20NOV2019 | 11 |
| A | 01DEC2019 | 10DEC2019 | 2 |
| A | 12DEC2019 | 19DEC2019 | 0 |
| B | 01JAN2018 | 05JAN2018 | 4 |
| B | 09JAN2018 | 11JAN2018 | 0 |
+--------+-----------+-----------+------+https://stackoverflow.com/questions/57349443
复制相似问题