Sas: come utilizzare (in=a) nell'istruzione merge


Quando si uniscono due set di dati in SAS, è possibile utilizzare l’istruzione IN per restituire solo le righe in cui esiste un valore in un particolare set di dati.

Ecco alcuni modi comuni per utilizzare nella pratica l’istruzione IN :

Metodo 1: restituisce le righe in cui esiste un valore nel primo set di dati (in=a)

 data final_data;
  merge data1 (in=a) data2;
  byID ;
  if a;
run ;

Questo particolare esempio unisce i set di dati chiamati data1 e data2 e restituisce solo le righe in cui esiste un valore in data1 .

Metodo 2: restituisce le righe in cui esiste un valore nel secondo set di dati (in=b)

 data final_data;
  merge data1 data2 (in=b);
  byID ;
  if b;
run ;

Questo particolare esempio unisce i set di dati chiamati data1 e data2 e restituisce solo le righe per le quali esiste un valore in data2 .

Metodo 3: restituisce le righe in cui il valore esiste in entrambi i set di dati (in=a) e (in=b)

 data final_data;
  merge data1(in=a) data2(in=b);
  byID ;
  if a and b;
run ;

Questo particolare esempio unisce i set di dati chiamati data1 e data2 e restituisce solo le righe in cui esiste un valore sia in data1 che in data2 .

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica con i due set di dati seguenti:

 /*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; 

Esempio 1: restituisce tutte le righe

Possiamo utilizzare la seguente istruzione di unione senza alcuna istruzione IN per unire i due set di dati in base al valore della colonna ID e restituire tutte le righe da entrambi i set di dati:

 /*perform merge*/
data final_data;
  merge data1 data2;
  byID ;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Tieni presente che vengono restituite tutte le righe in entrambi i set di dati, anche se mancano dei valori a causa di un valore ID non esistente in entrambi i set di dati.

Esempio 2: restituisce le righe in cui esiste valore nel primo set di dati (in = a)

Possiamo utilizzare la seguente istruzione merge con (in=a) per unire i due set di dati in base al valore nella colonna ID e restituire solo le righe in cui esiste un valore nel primo set di dati:

 /*perform merge*/
data final_data;
  merge data1 (in = a) data2;
  byID ;
  if a;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Tieni presente che vengono restituite solo le righe per le quali esiste un valore nel primo set di dati.

Esempio 3: restituisce le righe in cui esiste valore nel secondo set di dati (in=b)

Possiamo utilizzare la seguente istruzione merge con (in=b) per unire i due set di dati in base al valore nella colonna ID e restituire solo le righe in cui esiste un valore nel secondo set di dati:

 /*perform merge*/
data final_data;
  merge data1 data2(in=b);
  byID ;
  if b;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Tieni presente che vengono restituite solo le righe per le quali esiste un valore nel secondo set di dati.

Esempio 4: restituisce le righe in cui il valore esiste in entrambi i set di dati (in = a) e (in = b)

Possiamo utilizzare la seguente istruzione di unione con (in=a) e (in=b) per unire i due set di dati in base al valore nella colonna ID e restituire solo le righe in cui esiste un valore in entrambi i set di dati:

 /*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;

Tieni presente che vengono restituite solo le righe per le quali esiste un valore in entrambi i set di dati.

Nota : è possibile trovare la documentazione completa per l’istruzione di unione SAS qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in SAS:

Come eseguire un join sinistro in SAS
Come eseguire un inner join in SAS
Come eseguire un join esterno in SAS

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *