Sas: como mesclar se a não for b
Você pode usar a seguinte sintaxe básica para mesclar dois conjuntos de dados no SAS e retornar apenas as linhas para as quais existe um valor no primeiro conjunto de dados e não no segundo:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
Este exemplo específico mescla conjuntos de dados chamados data1 e data2 e retorna apenas linhas onde existe um valor em data1 e não em data2 .
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: mesclar dois conjuntos de dados no SAS usando If A Not B
Suponha que temos os dois conjuntos de dados a seguir no SAS que contêm informações sobre os vendedores de uma empresa:
/*create first dataset*/
data data1;
inputIDGender $;
datalines ;
1 Male
2 Male
3 Female
4 Male
5 Female
;
run ;
title "data1";
proc print data = data1;
/*create second dataset*/
data data2;
input IDSales;
datalines ;
1 22
2 15
4 29
6 31
7 20
8 13
;
run ;
title "data2";
proc print data = data2;
Se usarmos a seguinte instrução de mesclagem para mesclar os dois conjuntos de dados com base no valor da coluna ID , todas as linhas serão retornadas de ambos os conjuntos de dados:
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
No entanto, podemos usar instruções IN para retornar apenas linhas onde existe um valor no primeiro conjunto de dados e não no segundo conjunto de dados:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Observe que somente as linhas para as quais existe um valor no primeiro conjunto de dados e não no segundo conjunto de dados são retornadas.
Observação : você pode encontrar a documentação completa da instrução de mesclagem SAS aqui .
Recursos adicionais
Os tutoriais a seguir explicam como executar outras tarefas comuns no SAS:
Como fazer um left join no SAS
Como realizar uma junção interna no SAS
Como realizar uma junção externa no SAS