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