Sas: come unire se a non è b
È possibile utilizzare la seguente sintassi di base per unire due set di dati in SAS e restituire solo le righe per le quali esiste un valore nel primo set di dati e non nel secondo:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
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 e non in data2 .
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: unire due set di dati in SAS utilizzando If A Not B
Supponiamo di avere i seguenti due set di dati in SAS che contengono informazioni sui venditori di un’azienda:
/*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;
Se utilizziamo la seguente istruzione di unione per unire i due set di dati in base al valore della colonna ID , tutte le righe verranno restituite 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;
Tuttavia, possiamo utilizzare le istruzioni IN per restituire solo le righe in cui esiste un valore nel primo set di dati e non nel secondo set di dati:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not 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 primo set di dati e non nel secondo 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