Die Beispiele verwenden SASHELP-Daten (sashelp.class) oder intern generierte Daten (datalines).
1 Codeblock
PROC SORT / DATA STEP Data
Erklärung : Dieses Beispiel zeigt die klassische Verwendung der BY-Anweisung mit der Option DESCENDING in einer lokalen SAS-Sitzung. Es ist zwingend erforderlich, die Daten mit PROC SORT vorzusortieren, indem DESCENDING für die BY-Variable (hier 'Age') angegeben wird. Der DATA Step kann dann 'BY DESCENDING Age' verwenden, um die Gruppen in der angegebenen Reihenfolge zu verarbeiten.
Kopiert!
/* Création d'une table de démonstration */
DATA classData;
INPUT Name $ Age Height Weight;
DATALINES;
John 14 69 118
Mary 13 65 112
Robert 12 64 128
Alice 14 62 102
Thomas 12 57 85
;
RUN;
/* Tri par 'Age' en ordre décroissant en SAS local */
PROC SORT DATA=classData OUT=classAgeDescLocal;
BY DESCENDING Age;
RUN;
/* DATA Step pour regrouper par 'Age' en ordre décroissant */
DATA classAgeOrderLocal;
SET classAgeDescLocal;
BY DESCENDING Age;
/* Logique de traitement ici */
PUT 'Traitement de Age = ' Age;
RUN;
PROC PRINT DATA=classAgeOrderLocal;
TITLE 'Exemple 1: Ordre Décroissant en SAS Local';
RUN;
1
/* Création d'une table de démonstration */
2
DATA classData;
3
INPUT Name $ Age Height Weight;
4
DATALINES;
5
John 1469118
6
Mary 1365112
7
Robert 1264128
8
Alice 1462102
9
Thomas 125785
10
;
11
RUN;
12
13
/* Tri par 'Age' en ordre décroissant en SAS local */
14
PROC SORTDATA=classData OUT=classAgeDescLocal;
15
BY DESCENDING Age;
16
RUN;
17
18
/* DATA Step pour regrouper par 'Age' en ordre décroissant */
19
DATA classAgeOrderLocal;
20
SET classAgeDescLocal;
21
BY DESCENDING Age;
22
/* Logique de traitement ici */
23
PUT 'Traitement de Age = ' Age;
24
RUN;
25
26
PROC PRINTDATA=classAgeOrderLocal;
27
TITLE 'Exemple 1: Ordre Décroissant en SAS Local';
28
RUN;
2 Codeblock
DATA STEP CAS Data
Erklärung : Dieses Beispiel veranschaulicht die Verwendung der BY-Anweisung in einem DATA Step, der vollständig in CAS ausgeführt wird. Für eine aufsteigende Sortierung erfordert CAS keine vorherige Sortierung der Daten. Die implizite Ordnung wird von CAS selbst verwaltet und ist für die verteilte Umgebung optimiert. Das SAS-Log bestätigt die Ausführung in 'Cloud Analytic Services'.
Kopiert!
/* Établir une connexion à CAS et charger les données */
LIBNAME mycas CAS;
DATA mycas.classAge_cas;
SET SASHELP.CLASS;
RUN;
/* DATA Step en CAS avec regroupement implicite par 'Age' (ordre croissant) */
DATA mycas.classAgeOrder_cas;
SET mycas.classAge_cas;
BY Age;
/* Logique de traitement ici, ex: calculer la moyenne par Age */
IF FIRST.Age THEN DO;
count_age = 0;
sum_weight = 0;
END;
count_age + 1;
sum_weight + Weight;
IF LAST.Age THEN DO;
mean_weight_age = sum_weight / count_age;
OUTPUT;
END;
KEEP Age mean_weight_age;
RUN;
PROC PRINT DATA=mycas.classAgeOrder_cas;
TITLE 'Exemple 2: Regroupement implicite par Age en CAS (ordre croissant)';
RUN;
1
/* Établir une connexion à CAS et charger les données */
2
LIBNAME mycas CAS;
3
4
DATA mycas.classAge_cas;
5
SET SASHELP.CLASS;
6
RUN;
7
8
/* DATA Step en CAS avec regroupement implicite par 'Age' (ordre croissant) */
9
DATA mycas.classAgeOrder_cas;
10
SET mycas.classAge_cas;
11
BY Age;
12
/* Logique de traitement ici, ex: calculer la moyenne par Age */
13
IF FIRST.Age THENDO;
14
count_age = 0;
15
sum_weight = 0;
16
END;
17
count_age + 1;
18
sum_weight + Weight;
19
IF LAST.Age THENDO;
20
mean_weight_age = sum_weight / count_age;
21
OUTPUT;
22
END;
23
KEEP Age mean_weight_age;
24
RUN;
25
26
PROC PRINTDATA=mycas.classAgeOrder_cas;
27
TITLE 'Exemple 2: Regroupement implicite par Age en CAS (ordre croissant)';
28
RUN;
3 Codeblock
DATA STEP CAS (erzwungen lokal) Data
Erklärung : Dieses Beispiel hebt das Verhalten des DATA Steps hervor, wenn die Option DESCENDING mit BY auf einer CAS-Tabelle verwendet wird. Obwohl der DATA Step auf eine CAS-Tabelle abzielt, wird die Ausführung automatisch an eine lokale SAS-Sitzung übertragen, da die Option DESCENDING im CAS DATA Step nicht nativ unterstützt wird. Das SAS-Log wird für diesen Block keine 'Running DATA step in Cloud Analytic Services' Meldung anzeigen.
Kopiert!
/* Création d'une table de démonstration en CAS */
LIBNAME mycas CAS;
DATA mycas.students_cas;
INPUT Name $ Score;
DATALINES;
Alice 85
Bob 92
Charlie 78
Alice 90
Bob 88
;
RUN;
/* Tentative de DATA Step en CAS avec 'BY DESCENDING Score' */
/* Cela forcera l'exécution en session SAS locale */
DATA mycas.students_ordered_forced_local;
SET mycas.students_cas;
BY DESCENDING Score;
/* Logique de traitement */
PUT 'Traitement du score ' Score ' pour ' Name;
RUN;
PROC PRINT DATA=mycas.students_ordered_forced_local;
TITLE 'Exemple 3: Exécution forcée en SAS local (BY DESCENDING en DATA Step CAS)';
RUN;
1
/* Création d'une table de démonstration en CAS */
2
LIBNAME mycas CAS;
3
4
DATA mycas.students_cas;
5
INPUT Name $ Score;
6
DATALINES;
7
Alice 85
8
Bob 92
9
Charlie 78
10
Alice 90
11
Bob 88
12
;
13
RUN;
14
15
/* Tentative de DATA Step en CAS avec 'BY DESCENDING Score' */
16
/* Cela forcera l'exécution en session SAS locale */
TITLE 'Exemple 3: Exécution forcée en SAS local (BY DESCENDING en DATA Step CAS)';
26
RUN;
4 Codeblock
PROC SORT / DATA STEP CAS Data
Erklärung : Für komplexe Sortierszenarien, insbesondere mit absteigenden Ordnungen oder mehreren BY-Variablen, wird empfohlen, die Tabelle in CAS mithilfe von PROC SORT vorzusortieren. Anschließend kann der CAS DATA Step die Gruppen mithilfe der BY-Anweisung ohne die Option DESCENDING verarbeiten, da die Reihenfolge bereits festgelegt wurde. Dies ermöglicht die Nutzung der parallelen Ausführung von CAS unter Beibehaltung der gewünschten Reihenfolge. Hier erfolgt die Sortierung nach 'Group' und dann 'Age' in absteigender Reihenfolge.
Kopiert!
/* Création d'une table de démonstration plus complexe */
DATA classDataExtended;
INPUT Group $ Name $ Age Height Weight;
DATALINES;
A John 14 69 118
A Mary 13 65 112
B Robert 12 64 128
A Alice 14 62 102
B Thomas 12 57 85
A Peter 13 68 120
B Susan 14 66 115
;
RUN;
/* Charger la table dans CAS */
LIBNAME mycas CAS;
DATA mycas.classDataExtended_cas;
SET classDataExtended;
RUN;
/* Prétrier la table CAS pour un regroupement multi-variable avec ordre décroissant */
/* Noter que PROC SORT *peut* s'exécuter en CAS si la source est une table CAS */
PROC SORT DATA=mycas.classDataExtended_cas OUT=mycas.sortedClassExtended_cas;
BY Group DESCENDING Age;
RUN;
/* DATA Step en CAS avec regroupement par les variables triées */
DATA mycas.finalGroupedData_cas;
SET mycas.sortedClassExtended_cas;
BY Group Age;
/* Logique de traitement, ex: trouver le plus jeune de chaque groupe par Age décroissant */
IF FIRST.Group THEN YOUNGEST_IN_GROUP = Age;
IF FIRST.Age THEN PUT 'Nouveau groupe: ' Group ' - Age ' Age;
/* Peut ajouter d'autres traitements ici */
RUN;
PROC PRINT DATA=mycas.finalGroupedData_cas;
TITLE 'Exemple 4: Tri et Regroupement Multi-variables en CAS (Age décroissant)';
RUN;
1
/* Création d'une table de démonstration plus complexe */
2
DATA classDataExtended;
3
INPUT Group $ Name $ Age Height Weight;
4
DATALINES;
5
A John 1469118
6
A Mary 1365112
7
B Robert 1264128
8
A Alice 1462102
9
B Thomas 125785
10
A Peter 1368120
11
B Susan 1466115
12
;
13
RUN;
14
15
/* Charger la table dans CAS */
16
LIBNAME mycas CAS;
17
DATA mycas.classDataExtended_cas;
18
SET classDataExtended;
19
RUN;
20
21
/* Prétrier la table CAS pour un regroupement multi-variable avec ordre décroissant */
22
/* Noter que PROC SORT *peut* s'exécuter en CAS si la source est une table CAS */
/* DATA Step en CAS avec regroupement par les variables triées */
28
DATA mycas.finalGroupedData_cas;
29
SET mycas.sortedClassExtended_cas;
30
BY Group Age;
31
/* Logique de traitement, ex: trouver le plus jeune de chaque groupe par Age décroissant */
32
IF FIRST.Group THEN YOUNGEST_IN_GROUP = Age;
33
IF FIRST.Age THEN PUT 'Nouveau groupe: ' Group ' - Age ' Age;
34
/* Peut ajouter d'autres traitements ici */
35
RUN;
36
37
PROC PRINTDATA=mycas.finalGroupedData_cas;
38
TITLE 'Exemple 4: Tri et Regroupement Multi-variables en CAS (Age décroissant)';
39
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.