suponha que tenha os seguintes conjuntos de dados:
data DB;
input ID :$20. Admission :date09. Discharge :date09. Variable;
cards;
166 16FEB2019 26FEB2019 1
170 13JAN2017 25JAN2017 0
170 22FEB2017 07MAR2017 1
170 27APR2017 16MAY2017 1
170 30JAN2019 04MAR2019 0
313 03MAR2016 10MAR2016 1
;
run;
data DB1;
input ID :$20. Admission :date09. Discharge :date09. Variable_;
cards;
166 16FEB2019 26FEB2019 1
166 16FEB2019 26FEB2019 1
166 16FEB2019 26FEB2019 1
166 16FEB2019 26FEB2019 1
166 16FEB2019 26FEB2019 1
166 16FEB2019 26FEB2019 1
170 22FEB2017 07MAR2017 0
170 13JAN2017 25JAN2017 0
170 30JAN2019 04MAR2019 1
170 13JAN2017 25JAN2017 0
170 30JAN2019 04MAR2019 1
170 27APR2017 16MAY2017 1
170 27APR2017 16MAY2017 1
170 27APR2017 16MAY2017 1
170 27APR2017 16MAY2017 1
170 27APR2017 16MAY2017 1
313 03MAR2016 10MAR2016 0
313 03MAR2016 10MAR2016 0
313 03MAR2016 10MAR2016 0
;
run;
Existe uma maneira de comparar o valor Variable_ no DB1 com Variable no DB na data correspondente e POR ID? Como você pode ver no DB1, algumas datas são replicadas e quando isso acontece, o valor de Variable_ também é replicado, então não há chance de ter 1 ou 0 quando as datas são replicadas, mas sempre 1 ou sempre 0. A saída desejada deve ser:
data DB2;
input ID :$20. Admission :date09. Discharge :date09. Variable New_Var;
cards;
166 16FEB2019 26FEB2019 1 0
170 13JAN2017 25JAN2017 0 0
170 22FEB2017 07MAR2017 1 0
170 27APR2017 16MAY2017 1 0
170 30JAN2019 04MAR2019 0 1
313 03MAR2016 10MAR2016 1 0
;
run;
Em outras palavras, uma nova variável deve ser criada no DB, chamada "New_Var" igual a 1 somente se Variable_ = 1 no DB1 e Variable = 0 no DB.
Agradeço antecipadamente
Experimente isto
Resultado: