SAS:在时间间隔内选择观察

时间:2019-05-15 09:08:58

标签: sql date sas

我正在尝试在SAS中将每个id的观察间隔保存在一年之内。

我对每个id都有不同程度的迷恋。每个观察都有一个名为date1的访问日期和一个称为datum_sistahandelse的参考日期(这并不会对每个id的观察进行更改,而是在id之间进行更改)。日期的格式为YYYY-MM-DD。我只想保留date1晚于datum_sistahandelse但不超过一年的观察值。 因此,如果ID#1 datum_sistahandelse = 2014-02-03,那么我想保留date1在2014-02-04和2015-02-04之间的所有观察值。 对于ID#2 datum_sistahandelse = 2015-05-13,我想保留date1在2015-05-14和2016-05-14之间的所有观察值。 等等

谢谢

2 个答案:

答案 0 :(得分:0)

好,所以我知道了:

data efterdc5;
set efterdc4;
ettarefter=datum_sistahandelse;
format ettarefter yymmdd10.;
run;

data efterdc5;
set efterdc5;
ettarefter2=intnx('year',ettarefter,1,'same');
format ettarefter2 yymmdd10.;
run;

data efterdc5;
set efterdc5;
where datum_sistahandelse<date1<=ettarefter2;
drop ettarefter;
run;

这给了我比datum_sistahandelse保留观测值一年的结果

答案 1 :(得分:0)

由于参考日期值位于datum_sistahandelse列中,该列包含整个组的静态值,因此您只需一步即可进行子设置

data want;
  set have;
  where date1 between sistahandelse+1 and intnx('year',sistahandelse,1,'same');
run;