Sas: como usar (in=a) na instrução merge
Ao mesclar dois conjuntos de dados no SAS, você pode usar a instrução IN para retornar apenas linhas onde existe um valor em um determinado conjunto de dados.
Aqui estão algumas maneiras comuns de usar a instrução IN na prática:
Método 1: Retornar linhas onde existe valor no primeiro conjunto de dados (in=a)
data final_data;
merge data1 (in=a) data2;
byID ;
if a;
run ;
Este exemplo específico mescla conjuntos de dados chamados data1 e data2 e retorna apenas linhas onde existe um valor em data1 .
Método 2: Retornar linhas onde existe valor no segundo conjunto de dados (in=b)
data final_data;
merge data1 data2 (in=b);
byID ;
if b;
run ;
Este exemplo específico mescla os conjuntos de dados chamados data1 e data2 e retorna apenas as linhas para as quais existe um valor em data2 .
Método 3: Retornar linhas onde existe valor em ambos os conjuntos de dados (in=a) e (in=b)
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and 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 data2 .
Os exemplos a seguir mostram como usar cada método na prática com os dois conjuntos de dados a seguir:
/*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;
Exemplo 1: Retornar todas as linhas
Podemos usar a seguinte instrução merge sem qualquer instrução IN para mesclar os dois conjuntos de dados com base no valor da coluna ID e retornar todas as linhas 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;
Observe que todas as linhas em ambos os conjuntos de dados são retornadas, mesmo que os valores estejam ausentes devido a um valor de ID não existente em ambos os conjuntos de dados.
Exemplo 2: Retornar linhas onde existe valor no primeiro conjunto de dados (in = a)
Podemos usar a seguinte instrução de mesclagem com (in=a) para mesclar os dois conjuntos de dados com base no valor na coluna ID e retornar apenas as linhas onde existe um valor no primeiro conjunto de dados:
/*perform merge*/
data final_data;
merge data1 (in = a) data2;
byID ;
if a;
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 são retornadas.
Exemplo 3: Retornar linhas onde existe valor no segundo conjunto de dados (in=b)
Podemos usar a seguinte instrução de mesclagem com (in = b) para mesclar os dois conjuntos de dados com base no valor na coluna ID e retornar apenas as linhas onde existe um valor no segundo conjunto de dados:
/*perform merge*/
data final_data;
merge data1 data2(in=b);
byID ;
if b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Observe que somente as linhas para as quais existe um valor no segundo conjunto de dados são retornadas.
Exemplo 4: Retornar linhas onde o valor existe em ambos os conjuntos de dados (in = a) e (in = b)
Podemos usar a seguinte instrução de mesclagem com (in=a) e (in=b) para mesclar os dois conjuntos de dados com base no valor na coluna ID e retornar apenas as linhas onde existe um valor em ambos os conjuntos de dados:
/*perform merge*/
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Observe que somente as linhas para as quais existe um valor em ambos os conjuntos 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