Sas: hoe (in=a) te gebruiken in een merge-instructie
Wanneer u twee gegevenssets in SAS samenvoegt, kunt u de IN- instructie gebruiken om alleen rijen te retourneren waarin een waarde bestaat in een bepaalde gegevensset.
Hier zijn enkele veelvoorkomende manieren om de IN- instructie in de praktijk te gebruiken:
Methode 1: Retourneer rijen waar waarde bestaat in de eerste gegevensset (in=a)
data final_data;
merge data1 (in=a) data2;
byID ;
if a;
run ;
In dit specifieke voorbeeld worden gegevenssets met de naam data1 en data2 samengevoegd en worden alleen rijen geretourneerd waarin een waarde bestaat in data1 .
Methode 2: Retourneer rijen waar waarde bestaat in de tweede gegevensset (in=b)
data final_data;
merge data1 data2 (in=b);
byID ;
if b;
run ;
In dit specifieke voorbeeld worden de gegevenssets data1 en data2 samengevoegd en worden alleen de rijen geretourneerd waarvoor een waarde bestaat in data2 .
Methode 3: Retourneer rijen waarin waarde bestaat in beide gegevenssets (in=a) en (in=b)
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and b;
run ;
In dit specifieke voorbeeld worden gegevenssets met de naam data1 en data2 samengevoegd en worden alleen rijen geretourneerd waarin een waarde bestaat in zowel data1 als data2 .
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met de volgende twee gegevenssets:
/*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;
Voorbeeld 1: retourneer alle rijen
We kunnen de volgende merge- instructie gebruiken zonder enige IN- instructie om de twee datasets samen te voegen op basis van de ID- kolomwaarde en alle rijen uit beide datasets te retourneren:
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Houd er rekening mee dat alle rijen in beide datasets worden geretourneerd, zelfs als waarden ontbreken vanwege een ID-waarde die niet in beide datasets bestaat.
Voorbeeld 2: retourneer rijen waar waarde bestaat in de eerste gegevensset (in = a)
We kunnen de volgende merge- instructie gebruiken met (in=a) om de twee datasets samen te voegen op basis van de waarde in de ID- kolom en alleen de rijen te retourneren waarin een waarde bestaat in de eerste dataset:
/*perform merge*/
data final_data;
merge data1 (in = a) data2;
byID ;
if a;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Houd er rekening mee dat alleen rijen waarvoor een waarde bestaat in de eerste gegevensset worden geretourneerd.
Voorbeeld 3: Rijen retourneren waar waarde bestaat in de tweede gegevensset (in=b)
We kunnen de volgende merge- instructie gebruiken met (in=b) om de twee datasets samen te voegen op basis van de waarde in de ID- kolom en alleen de rijen terug te geven waar een waarde bestaat in de tweede dataset:
/*perform merge*/
data final_data;
merge data1 data2(in=b);
byID ;
if b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Houd er rekening mee dat alleen rijen waarvoor een waarde bestaat in de tweede gegevensset worden geretourneerd.
Voorbeeld 4: Rijen retourneren waarin de waarde voorkomt in beide gegevenssets (in = a) en (in = b)
We kunnen de volgende samenvoeginstructie gebruiken met (in=a) en (in=b) om de twee gegevenssets samen te voegen op basis van de waarde in de ID- kolom en alleen die rijen te retourneren waarin een waarde bestaat in beide gegevenssets:
/*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;
Houd er rekening mee dat alleen rijen waarvoor in beide gegevenssets een waarde bestaat, worden geretourneerd.
Opmerking : u kunt de volledige documentatie voor de SAS merge- instructie hier vinden.
Aanvullende bronnen
In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:
Hoe maak je een left join in SAS?
Hoe u een inner join uitvoert in SAS
Hoe u een externe join in SAS uitvoert