SAS: выбор наблюдений внутри временного интервала - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь сохранить наблюдения с интервалом в один год для идентификатора в SAS.

У меня есть разные количества наблюдений на идентификатор.Каждое наблюдение имеет дату посещения, называемую date1, и контрольную дату, называемую datum_sistahandelse (которая не изменяется для наблюдений по идентификатору, но изменяется между идентификаторами).Даты в формате ГГГГ-ММ-ДД.Я хочу сохранить только те наблюдения, где 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 голосов
/ 15 мая 2019

Поскольку значение контрольной даты находится в столбце datum_sistahandelse, который содержит статическое значение для группы, вы можете выполнить поднабор за один шаг

data want;
  set have;
  where date1 between sistahandelse+1 and intnx('year',sistahandelse,1,'same');
run;
0 голосов
/ 15 мая 2019

Хорошо, я понял:

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

...