Das Verschachteln ist eine Technik zum Kombinieren von Daten, bei der Beobachtungen aus mehreren Datensätzen in einen neuen Datensatz verschachtelt werden. Um Datensätze zu verschachteln, müssen sie zuerst nach den angegebenen BY-Variablen sortiert oder indiziert werden. Der Prozess durchläuft jeden Datensatz sequenziell und kopiert die Beobachtungen unter Beachtung der Reihenfolge der BY-Variablen in den neuen Datensatz. Fehlende Werte werden für Variablen generiert, die in einem Datensatz vorhanden sind, aber in einem anderen fehlen. Es ist entscheidend, die Reihenfolge zu beachten, in der die Datensätze in der SET-Anweisung aufgeführt sind, da dies die Reihenfolge der Beobachtungen bestimmt, wenn BY-Variablenwerte dupliziert werden. Die folgenden Beispiele veranschaulichen das Verschachteln mit eindeutigen BY-Werten, duplizierten BY-Werten und unterschiedlichen BY-Werten zwischen den Eingabedatensätzen.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden generierte Daten (Datalines), um die Eingabedatensätze 'animal', 'plant', 'animalDupes' und 'plantMissing2' zu erstellen. SASHELP wird nicht verwendet.
1 Codeblock
DATA STEP / PROC SORT Data
Erklärung : Dieses Programm erstellt zwei Datensätze, 'animal' und 'plant', und sortiert sie dann nach der Variablen 'common'. Anschließend verschachtelt es diese Datensätze zu einem neuen Datensatz namens 'interleave'. Die Beobachtungen im Datensatz 'interleave' sind abwechselnd nach dem Wert der Variablen 'common' aus den Datensätzen 'animal' und 'plant' organisiert. Das Endergebnis wird von PROC PRINT angezeigt, wobei alle Variablen der beiden Eingabedatensätze mit fehlenden Werten angezeigt werden, wenn eine Variable in einem der ursprünglichen Datensätze nicht vorhanden ist.
Kopiert!
data animal;
input common $ animal$;
datalines;
a Ant
b Bird
c Cat
d Dog
e Eagle
f Frog
;
run;
data plant;
input common $ plant$;
datalines;
a Apple
b Banana
c Coconut
d Dewberry
e Eggplant
f Fig
;
run;
proc sort data=animal; by common; run;
proc sort data=plant; by common; run;
data interleave;
set animal plant;
by common;
run;
proc print data=interleave; run;
1
DATA animal;
2
INPUT common $ animal$;
3
DATALINES;
4
a Ant
5
b Bird
6
c Cat
7
d Dog
8
e Eagle
9
f Frog
10
;
11
RUN;
12
13
DATA plant;
14
INPUT common $ plant$;
15
DATALINES;
16
a Apple
17
b Banana
18
c Coconut
19
d Dewberry
20
e Eggplant
21
f Fig
22
;
23
RUN;
24
25
PROC SORTDATA=animal; BY common; RUN;
26
PROC SORTDATA=plant; BY common; RUN;
27
28
DATA interleave;
29
SET animal plant;
30
BY common;
31
RUN;
32
PROC PRINTDATA=interleave; RUN;
2 Codeblock
DATA STEP / PROC SORT Data
Erklärung : Dieses Beispiel erstellt zwei Datensätze, 'animalDupes' und 'plantDupes', die duplizierte Werte für die Variable 'common' enthalten. Nach dem Sortieren nach 'common' verschachtelt die SET-Anweisung die Beobachtungen. Angesichts der Reihenfolge 'animalDupes' gefolgt von 'plantDupes' in der SET-Anweisung erscheinen für duplizierte Werte von 'common' die Beobachtungen von 'animalDupes' vor denen von 'plantDupes'. Das Programm druckt dann den Datensatz 'interleave', der alle Beobachtungen der beiden Eingabedatensätze enthält, verschachtelt nach der Variablen 'common'.
Kopiert!
data animalDupes;
input common $ animal$;
datalines;
a Ant
a Ape
b Bird
c Cat
d Dog
e Eagle
;
run;
data plantDupes;
input common $ plant$;
datalines;
a Apple
b Banana
c Coconut
c Celery
d Dewberry
e Eggplant
;
run;
proc sort data=animalDupes; by common; run;
proc sort data=plantDupes; by common; run;
data interleave;
set animalDupes plantDupes;
by common;
run;
proc print data=interleave; run;
1
DATA animalDupes;
2
INPUT common $ animal$;
3
DATALINES;
4
a Ant
5
a Ape
6
b Bird
7
c Cat
8
d Dog
9
e Eagle
10
;
11
RUN;
12
13
DATA plantDupes;
14
INPUT common $ plant$;
15
DATALINES;
16
a Apple
17
b Banana
18
c Coconut
19
c Celery
20
d Dewberry
21
e Eggplant
22
;
23
RUN;
24
25
PROC SORTDATA=animalDupes; BY common; RUN;
26
PROC SORTDATA=plantDupes; BY common; RUN;
27
28
DATA interleave;
29
SET animalDupes plantDupes;
30
BY common;
31
RUN;
32
33
PROC PRINTDATA=interleave; RUN;
3 Codeblock
DATA STEP / PROC SORT Data
Erklärung : Dieses Beispiel ist dem vorherigen ähnlich, aber die Reihenfolge der Datensätze in der SET-Anweisung ist umgekehrt ('plantDupes' gefolgt von 'animalDupes'). Dies zeigt, dass die Reihenfolge in der SET-Anweisung die Priorität bestimmt, wenn die Werte der BY-Variablen dupliziert werden. Für doppelte 'common'-Werte werden die Beobachtungen von 'plantDupes' vor denen von 'animalDupes' aufgelistet. Das Programm druckt den Datensatz 'interleave'.
Kopiert!
data animalDupes;
input common $ animal$;
datalines;
a Ant
a Ape
b Bird
c Cat
d Dog
e Eagle
;
run;
data plantDupes;
input common $ plant$;
datalines;
a Apple
b Banana
c Coconut
c Celery
d Dewberry
e Eggplant
;
run;
proc sort data=animalDupes; by common; run;
proc sort data=plantDupes; by common; run;
data interleave;
set plantDupes animalDupes; by common;
run;
proc print data=interleave; run;
1
DATA animalDupes;
2
INPUT common $ animal$;
3
DATALINES;
4
a Ant
5
a Ape
6
b Bird
7
c Cat
8
d Dog
9
e Eagle
10
;
11
RUN;
12
13
DATA plantDupes;
14
INPUT common $ plant$;
15
DATALINES;
16
a Apple
17
b Banana
18
c Coconut
19
c Celery
20
d Dewberry
21
e Eggplant
22
;
23
RUN;
24
25
PROC SORTDATA=animalDupes; BY common; RUN;
26
PROC SORTDATA=plantDupes; BY common; RUN;
27
28
DATA interleave;
29
SET plantDupes animalDupes; BY common;
30
RUN;
31
PROC PRINTDATA=interleave; RUN;
4 Codeblock
DATA STEP / PROC SORT Data
Erklärung : Dieses Programm verschachtelt die Datensätze 'animalDupes' und 'plantMissing2', wobei beide Datensätze Werte für die Variable 'common' enthalten, die im jeweils anderen nicht vorhanden sind (z. B. 'd' in 'animalDupes' und 'f' in 'plantMissing2'). Nach dem Sortieren werden die Datensätze verschachtelt. Der resultierende Datensatz 'interleave' enthält alle Beobachtungen der beiden Eingabedatensätze, wobei fehlende Werte für Variablen erstellt werden, die in einem Datensatz für einen bestimmten 'common'-Wert nicht gefunden wurden. Das Programm druckt den Datensatz 'interleave'.
Kopiert!
data animalDupes;
input common $ animal$;
datalines;
a Ant
a Ape
b Bird
c Cat
d Dog
e Eagle
;
run;
data plantMissing2;
input common $ plant$;
datalines;
a Apple
b Banana
c Coconut
e Eggplant
f Fig
;
run;
proc sort data=animalDupes; by common; run;
proc sort data=plantMissing2; by common; run;
data interleave;
set animalDupes plantMissing2;
by common;
run;
proc print data=interleave; run;
1
DATA animalDupes;
2
INPUT common $ animal$;
3
DATALINES;
4
a Ant
5
a Ape
6
b Bird
7
c Cat
8
d Dog
9
e Eagle
10
;
11
RUN;
12
13
DATA plantMissing2;
14
INPUT common $ plant$;
15
DATALINES;
16
a Apple
17
b Banana
18
c Coconut
19
e Eggplant
20
f Fig
21
;
22
RUN;
23
24
PROC SORTDATA=animalDupes; BY common; RUN;
25
PROC SORTDATA=plantMissing2; BY common; RUN;
26
27
DATA interleave;
28
SET animalDupes plantMissing2;
29
BY common;
30
RUN;
31
32
PROC PRINTDATA=interleave; RUN;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.