Sas: come unire i set di dati in base a due variabili


È possibile utilizzare la seguente sintassi di base per unire due set di dati in SAS in base alla corrispondenza di due variabili:

 data final_data;
  merge data1(in=a) data2(in=b);
  by ID Store;
  if a and b;
run ;

Questo particolare esempio unisce i set di dati chiamati data1 e data2 in base alle variabili chiamate ID e Store e restituisce solo le righe in cui esiste un valore in entrambi i set di dati.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: unire set di dati in SAS in base a due variabili

Supponiamo di avere il seguente set di dati in SAS che contiene informazioni sui venditori di un’azienda:

 /*create first dataset*/
data data1;
    inputStoreID $;
    datalines ;
1A
1B
1 C
2A
2C
3A
3 B
;
run ;

/*view first dataset*/
title "data1";
proc print data = data1; 

E supponiamo di avere un altro set di dati contenente informazioni sulle vendite effettuate in diversi negozi da ciascun associato:

 /*create second dataset*/
data data2;
    input Store ID $Sales;
    datalines ;
1 to 22
1 B 25
2 to 40
2 B 24
2 C 29
3 to 12
3 B 15
;
run ;

/*view second dataset*/
title "data2";
proc print data = data2;

Possiamo utilizzare la seguente istruzione merge per unire i due set di dati in base ai valori corrispondenti nelle colonne ID e Store , quindi restituire solo le righe in cui esiste un valore in entrambe le colonne:

 /*perform merge*/
data final_data;
  merge data1(in=a) data2(in=b);
  by ID Store;
  if a and b;
run ;

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

Il set di dati risultante restituisce righe in cui i valori delle colonne ID e Store corrispondono.

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:

SAS: come eseguire un’unione uno-a-molti
SAS: come utilizzare (in=a) nell’istruzione merge
SAS: come unire se A non è B

Aggiungi un commento

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