sas
Joins gebruiken in SAS
Zoeken…
Invoering
Elke database is een verzameling van verschillende tabellen en elke tabel bevat verschillende gegevens op een georganiseerde manier. Terwijl we met gegevens werken, is de informatie die we vaak nodig hebben verspreid over meerdere tabellen. We hebben joins / merge nodig om de gewenste uitvoer te krijgen.
In SAS gebruiken we joins tijdens het werken met Proc SQL
en gebruiken we merge tijdens het werken met Data step
. We zullen nu alleen praten over joins in Proc SQL
.
parameters
Type lidmaatschap | uitgang |
---|---|
Proc Sql | SQL-procedure in SAS |
Maak een tabel | Maakt een SAS-gegevensset |
kiezen | Selecteert vereiste variabelen uit respectieve datasets |
Waar | Specificeert een specifieke voorwaarde |
ophouden | Beëindig de procedure |
Opmerkingen
Zoals vermeld in de inleiding, kunnen we Merge
ook gebruiken in een data step
die in een apart onderwerp wordt besproken. Joins spelen een zeer belangrijke rol om gegevens te combineren en te verenigen volgens de vereiste.
Verticaal samenvoegen
Verticale join voegt gegevensset B toe aan gegevensset A, mits beide vergelijkbare variabelen hebben. We hebben bijvoorbeeld verkopen voor de maand januari'17 in gegevensset A en verkopen voor februari'17 in gegevensset B. Om een gegevensset C te maken die zowel januari als februari verkopen, gebruiken we Vertical Join.
PROC SQL;
CREATE TABLE C AS
SELECT *
FROM A
UNION
SELECT *
FROM B;
QUIT;
Gegevensset C heeft nu waarnemingen van zowel A als B en is verticaal toegevoegd.
Innerlijke join
Inner join maakt een gegevensset met records die overeenkomende waarden uit beide tabellen hebben. We hebben bijvoorbeeld een gegevensset A die klantinformatie bevat en een gegevensset B die creditcardgegevens bevat. Laten we gegevensset C maken om de creditcardgegevens van klanten in gegevensset A te krijgen
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUM
FROM CUSTOMER A, CC_DETAILS B
WHERE A.CUSTOMERID=B.CUSTOMERID
QUIT;
Dataset C heeft alleen overeenkomende waarnemingen uit beide datasets.
Links meedoen
Linker join retourneert alle observaties in de linkergegevensset, ongeacht hun sleutelwaarden, maar alleen observaties met overeenkomende sleutelwaarden uit de juiste gegevensset. Gezien hetzelfde voorbeeld als hierboven,
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A LEFT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;
Dataset C bevat alle waarden uit de linker tabel, plus overeenkomende waarden uit de rechter tabel of ontbrekende waarden in het geval van geen overeenkomst.
Rechts meedoen
Net als linker join selecteert rechter join alle observaties uit de rechter gegevensset en de overeenkomende records uit de linker tabel.
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A RIGHT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;
Gegevensset C bevat alle waarden uit de rechtertabel, plus overeenkomende waarden uit de linkertabel of ontbrekende waarden in het geval van geen overeenkomst.
Volledige deelname
Volledige join selecteert alle waarnemingen uit beide gegevenssets, maar er ontbreken waarden waarbij de sleutelwaarde in elke waarneming slechts in één tabel voorkomt.
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A FULL JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;
Dataset C bevat alle records uit beide tabellen en vult in .
voor het missen van wedstrijden aan beide kanten.