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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *