Заполните поля в SAS по ID и дате - PullRequest
0 голосов
/ 20 сентября 2018

Мой набор данных выглядит следующим образом:

AsAtDate  ReleaseDate ID Var1 Var2 ... Var5
200701     200601      1   x    .    
200702     200601      1   .    a
200703     200601      1   .    .
200701     200702      2   .    b 
200702     200702      2   y    b
200703     200702      2   y    .
200702     200501      3   z    .
200703     200501      3   .    .

Я хочу, чтобы мои результаты выглядели так:

AsAtDate  ReleaseDate ID Var1 Var2 ... Var5
200701     200601      1   x    a    
200702     200601      1   x    a
200703     200601      1   x    a
200701     200702      2   .    . 
200702     200702      2   y    b
200703     200702      2   y    b
200702     200501      3   z    .
200703     200501      3   z    .

Как мне получить мои данные, чтобы считать ReleaseDate как, еслиReleaseDate раньше, чем AsAtDate, затем заполняет поля идентификатором.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Опираясь на ваше решение, мы можем добавить оператор CASE для условного заполнения данных по мере необходимости.

proc sql;
create table want as
select *, 
       case when ReleaseDate>AsAtDate then " " 
       else max(Var1) 
       end as _Var1
from have
group by ID
order by ID, AsAtdate;
quit;
0 голосов
/ 21 сентября 2018

Я попробовал следующий код, есть ли более упрощенный код, чем этот?

proc sql;
create table want as
select *, max(Var1) as _Var1
from have
group by ID
order by ID, AsAtdate;
quit;

data want1;
set want;
by id;
if ReleaseDate > AsAtDate then _Var1='';
run; 
...