SAS - шаг данных с использованием сохранения?
У меня есть следующие данные...
acct seq start end
1111 A 01/01/2014 01/31/2014
1111 A 02/01/2014 02/28/2014
Мне нужно исключить записи, в которых у учетной записи есть дата начала, которая составляет 1 день после даты окончания. Таким образом, вышеупомянутая запись будет исключена, поскольку у нее есть дата окончания 31.01.2014 г. для первого наблюдения и дата начала 01.02.2014 г. для следующего наблюдения.
Я думаю, что мне нужно использовать Retain для этого, но я не совсем уверен, как это написать. Любая помощь будет оценена...
2 ответа
Решение Proc SQL... при условии, что вы используете даты SAS...
proc sql;
create table excludes as
select distinct acct
from data as one
left join data as two
on one.acct=two.acct and one.end=two.start-1
where two.start is not null;
create table filtered as
select *
from data
where acct not in
(
select *
from excludes
);
quit;
Решение Datastep, предполагая, что ваши данные сгруппированы по acct
а также seq
(и ваши даты SAS-даты)
данные хотят; установить есть; по действию seq; сохранить пред.; prevdt = конец; если first.seq, то выводить; еще делать; если start > sum(prevdt,1), то выводить; prevdt = конец; конец; падение преддв; бежать;