Suponha que haja um conjunto de dados "DB1" com x colunas (variáveis). Você tem uma variável chamada "my_identifiers". Então você tem outro conjunto de dados "DB2" com uma variável chamada "my_identifiers_subset". Então, se os valores de "my_identifiers_subset" do DB2 estiverem em "my_identifiers" do DB1, você adiciona um sinalizador de coluna no DB1 contendo 1, caso contrário, 0.
Alguém pode me ajudar por favor? Sei como lidar com isso quando a comparação envolve o mesmo conjunto de dados, mas não sei como lidar com isso ao comparar com um conjunto de dados externo.
data DB1; input ID$ my_identifiers$; cards; 1 345 1 45 2 678 3 432 3 432 4 7 .......... ;
data DB2; input my_identifiers_subset$; cards; 345 432 44 .......... ;
Saída desejada:
data DB3; input ID$ my_identifiers$ Index$; cards; 1 345 1 1 45 0 2 678 0 3 432 1 3 432 1 4 7 0 .......... ;
Agradeço antecipadamente,
Melhor.
Portanto, usar a
proc sql
e unir os 2 conjuntos de dados pode ser a solução mais fácil. Você tem algumas opções diferentes.Primeiro, você poderia usar an
EXISTS
com uma subconsulta para determinar seDB1.my_identifiers
está emdb2.my_identifiers_subset
. Ou você poderia fazer umLEFT JOIN
para obter o mesmo efeito. A única ressalva com a segunda solução é quedb2
pode haver várias instâncias do mesmomy_identifiers_subset
; nesse caso, você obteria linhas extras.Algumas outras consultas SQL que fazem o mesmo. As avaliações lógicas SAS podem ser atribuídas e ter valor
1
para verdadeiro e0
falso.