Veröffentlicht am :
Datenmanipulation CREATION_INTERNE

Daten mit einer Hash-Tabelle zusammenführen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Eine SAS©-Hash-Tabelle enthält Zeilen (Hash-Einträge) und Spalten (Hash-Variablen). Jeder Hash-Eintrag muss mindestens eine Schlüsselspalte und eine Datenspalte haben. Die Werte können fest kodiert oder aus einem SAS©-Datensatz geladen werden. Eine Hash-Tabelle befindet sich vollständig im Speicher, was ihre Operationen schnell macht. Die Daten müssen nicht vorsortiert werden. Eine Hash-Tabelle ist temporär: Sobald der DATA-Schritt abgeschlossen ist, existiert sie nicht mehr. Ihr Inhalt kann jedoch in einem SAS©-Datensatz oder einer externen Datenbank gespeichert werden. Das Hash-Objekt wird dynamisch dimensioniert.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (DATA step mit DATALINES), um die Tabellen `product_list` und `supplier` zu simulieren.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA-Schritt-Codeblock erstellt den Datensatz `work.product_list` unter Verwendung von Inline-Daten (DATALINES). Er definiert die Variablen `Product_Id`, `Product_Name` und `Supplier_ID` mit ihren jeweiligen Typen und Längen. Leerzeichen und Sonderzeichen in `Product_Name` wurden durch Unterstriche ersetzt, um die Verwaltung über DATALINES zu verbessern.
Kopiert!
1DATA work.product_list;
2 LENGTH Product_Id $10 Product_Name $40 Supplier_ID 8;
3 INPUT Product_Id $ Product_Name :$40. Supplier_ID;
4 DATALINES;
5240200100101 Grandslam_Staff_Tour_Mhl_Golf_Gloves 3808
6210200100017 Sweatshirt_Children's_O-Neck 3298
7240400200022 Aftm_95_Vf_Long_Bg-65_White 1280
8230100100017 Men's_Jacket_Rem 50
9210200300006 Fleece_Cuff_Pant_Kid'S 1303
10210200500002 Children's_Mitten 772
11210200700016 Strap_Pants_BBO 798
12210201000050 Kid_Children's_T-Shirt 2963
13210200100009 Kids_Sweat_Round_Neck,Large_Logo 3298
14210201000067 Logo_Coord.Children's_Sweatshirt 2963
15220100100019 Fit_Racing_Cap 1303
16220100100025 Knit_Hat 1303
17220100300001 Fleece_Jacket_Compass 772
18220200200036 Soft_Astro_Men's_Running_Shoes 1747
19230100100015 Men's_Jacket_Caians 50
20230100500004 Backpack_Flag,_6,5x9_Cm. 316
21210200500006 Rain_Suit,_Plain_w/backpack_Jacket 772
22230100500006 Collapsible_Water_Can 316
23224040020000 Bat_5-Ply 3808
24220200200035 Soft_Alta_Plus_Women's_Indoor_Shoes 1747
25240400200066 Memhis_350,Yellow_Medium,_6-pack 1280
26240200100081 Extreme_Distance_90_3-pack 3808
27;
28RUN;
2 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA-Schritt-Codeblock erstellt den Datensatz `work.supplier` unter Verwendung von Inline-Daten (DATALINES). Er definiert die Variablen `Supplier_ID`, `Supplier_Name`, `Supplier_Address` und `Country` mit ihren jeweiligen Typen und Längen. Leerzeichen und Sonderzeichen wurden durch Unterstriche ersetzt, um die Verwaltung über DATALINES zu verbessern.
Kopiert!
1DATA work.supplier;
2 LENGTH Supplier_ID 8 Supplier_Name $40 Supplier_Address $45 Country $2;
3 INPUT Supplier_ID Supplier_Name :$40. Supplier_Address :$45. Country $;
4 DATALINES;
550 Scandinavian_Clothing_A/S Kr._Augusts_Gate_13 NO
6316 Prime_Sports_Ltd 9_Carlisle_Place GB
7755 Top_Sports Jernbanegade_45 DK
8772 AllSeasons_Outdoor_Clothing 553_Cliffview_Dr US
9798 Sportico C._Barquillo_1 ES
101280 British_Sports_Ltd 85_Station_Street GB
111303 Eclipse_Inc 1218_Carriole_Ct US
121684 Magnifico_Sports Rua_Costa_Pinto_2 PT
131747 Pro_Sportswear_Inc 2434_Edgebrook_Dr US
143298 A_Team_Sports 2687_Julie_Ann_Ct US
153808 Carolina_Sports 3860_Grand_Ave US
16;
17RUN;
3 Codeblock
DATA STEP / PROC PRINT
Erklärung :
1. Enthält eine LENGTH-Anweisung, um sicherzustellen, dass die Variablen `Supplier_Name`, `Supplier_Address` und `Country` im PDV (Program Data Vector) definiert sind.
2. Bei der ersten Iteration des DATA-Schritts wird das Hash-Objekt `S` deklariert. `Supplier_ID` wird als Schlüssel des Hash-Objekts zugewiesen. Enthält die Werte von `Supplier_Name`, `Supplier_Address` und `Country` aus dem Datensatz `work.supplier`.
3. Da `Supplier_Name`, `Supplier_Address` und `Country` nicht explizit mit initialen Werten zugewiesen werden, schreibt SAS eine NOTIZ in das Protokoll, die besagt, dass die Variablen nicht initialisiert sind. `CALL MISSING` unterdrückt diese NOTIZ.
4. Liest eine Beobachtung aus dem Datensatz `product_list`.
5. Die Methode `FIND` wird aufgerufen, um zu überprüfen, ob die `Supplier_ID` aus `product_list` mit dem Schlüssel `Supplier_ID` eines der Einträge des Hash-Objekts übereinstimmt. Wenn es eine Übereinstimmung gibt (`rc=0`), wird die Beobachtung in den Datensatz `supplier_info` geschrieben.
PROC PRINT zeigt dann den Inhalt des Datensatzes `supplier_info` an.
Kopiert!
1DATA supplier_info;
2 drop rc;
3 LENGTH Supplier_Name $40 Supplier_Address $ 45 Country $ 2; /* 1*/
4 IF _N_=1 THEN DO;
5 declare hash S(dataset:'work.supplier'); /* 2*/
6 S.definekey('Supplier_ID');
7 S.definedata('Supplier_Name',
8 'Supplier_Address','Country');
9 S.definedone();
10 call missing(Supplier_Name,
11 Supplier_Address,Country); /* 3*/
12 END;
13 SET work.product_list; /* 4*/
14 rc=S.find(); /* 5*/
15RUN;
16PROC PRINT DATA=supplier_info;
17 var Product_ID Supplier_ID Supplier_Name
18 Supplier_Address Country;
19 title "Product Information";
20RUN;
21title;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved