suponha que tenha o seguinte conjunto de dados:
data have;
input ID :$20. Admission :date09. Discharge :date09. Index Variable1 Variable2;
format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 1 2 4
0001 21FEB2015 31DEC2015 0 . 2
0001 21FEB2015 31DEC2015 0 3 .
0001 01JAN2019 31DEC2019 0 6 9
0002 01JAN2015 31DEC2015 0 2 .
0002 01JAN2019 31OCT2019 1 . 2
0002 01JAN2019 31OCT2019 0 . 2
;
Então, tenho outro conjunto de dados que se parece com este e vem de outro cálculo:
data have1;
input ID :$20. Admission :date09. Discharge :date09. Index Variable1 Variable2;
format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 1 6 8
0002 01JAN2019 31OCT2019 1 4 2
;
Existe uma maneira de obter o seguinte?
data have2;
input ID :$20. Admission :date09. Discharge :date09. Index Variable1 Variable2;
format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 1 6 8
0001 21FEB2015 31DEC2015 0 . .
0001 21FEB2015 31DEC2015 0 . .
0001 01JAN2019 31DEC2019 0 . .
0002 01JAN2015 31DEC2015 0 . .
0002 01JAN2019 31OCT2019 1 4 2
0002 01JAN2019 31OCT2019 0 . .
;
Em outras palavras, eu gostaria de substituir valores em have por valores em have1 (onde Index = 1). O restante em have deve ser definido como "." para ter have3. O número total de variáveis: é 50. Aqui, apenas 2 são mostrados para simplificar.
Agradeço antecipadamente
Você pode fazer isso de duas maneiras:
Vamos dar uma olhada em ambos.
Mesclagem Simples
Queremos mesclar pela chave, que é a combinação de
ID Admission Discharge Index
. Primeiro, classificaremos ambos os conjuntos de dados e, em seguida, os mesclaremos por essa chave. Se a combinação de chaves corresponder, definiremosVariable1
eVariable2
como ausente.Junção de Hash
Isso é muito parecido com uma mesclagem simples, mas não requer classificação e tem o melhor desempenho. Trataremos
have1
como uma tabela de consulta e extrairemos valores dela para cada correspondência. Se não encontrarmos uma correspondência, definiremos os valores deVariable1
eVariable2
como missing.