Preencher os campos em SAS por ID e data

votos
-2

Meu conjunto de dados se parece com isso:

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   .    .

Eu quero que meus resultados para ficar assim:

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    .

Como faço para obter meus dados para considerar o ReleaseDate como, se ReleaseDate é mais cedo do que AsAtDate em seguida, preencher os campos de ID.

Publicado 20/09/2018 em 04:09
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Com base na sua solução, podemos adicionar uma instrução CASE para preencher condicionalmente nos dados, conforme necessário.

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;
Respondeu 21/09/2018 em 15:10
fonte usuário

votos
0

Eu tentei o seguinte código, existe um código mais simplificado do que isso?

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; 
Respondeu 21/09/2018 em 01:47
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more