Veröffentlicht am :
Statistik SASHELP / CREATION_INTERNE

Einen spezifischen Rang für eine Variable erzwingen (PROC CARDINALITY)

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die CARDINALITY-Prozedur ermöglicht die Analyse der Kardinalität von Variablen in einem CAS-Datensatz. Sie kann die Anzahl der eindeutigen Ebenen für jede angegebene Variable identifizieren und, wenn die Anzahl der Ebenen eine definierte Grenze (MAXLEVELS) überschreitet, die häufigsten Ebenen melden. Die Option ORDER= in der VAR-Anweisung ermöglicht die Angabe einer Sortierreihenfolge (z.B. ASC für aufsteigend, DESC für absteigend) für die Auswahl und Anzeige der Ebenen der Variablen, wobei Standardbenutzerformate oder die alphabetische Standardreihenfolge ignoriert werden. Dieses Beispiel zeigt, wie eine numerisch aufsteigende Reihenfolge auf die Variable 'engineSize' angewendet wird.
Datenanalyse

Type : SASHELP / CREATION_INTERNE


Die Beispiele verwenden den integrierten Datensatz 'sashelp.cars' und über DATA Step generierte Daten, um Autonomie zu gewährleisten.

1 Codeblock
PROC CARDINALITY
Erklärung :
Dieses Beispiel veranschaulicht die einfachste Verwendung der CARDINALITY-Prozedur. Es lädt den Datensatz 'sashelp.cars' in eine CAS-Sitzung (mylib.cars) und analysiert dann die Variablen 'Make', 'Model' und 'Type', um ihre Kardinalität zu bestimmen, ohne eine bestimmte Reihenfolge anzugeben. Die Ergebnisse werden in 'mylib.card_basic' gespeichert und angezeigt. Die Standardreihenfolge ist alphabetisch oder nach Häufigkeit, wenn ein Schwellenwert erreicht wird.
Kopiert!
1/* Étape DATA pour charger sashelp.cars dans une bibliothèque CAS */
2LIBNAME mylib cas;
3DATA mylib.cars;
4 SET sashelp.cars;
5RUN;
6 
7/* Utilisation de base de PROC CARDINALITY */
8title 'Cardinalité des variables par défaut';
9PROC CARDINALITY DATA=mylib.cars outcard=mylib.card_basic;
10 var Make Model Type;
11RUN;
12 
13PROC PRINT DATA=mylib.card_basic;
14 var _varname_ _order_ _cardinality_;
15 title 'Résumé de la cardinalité (Basique)';
16RUN;
2 Codeblock
PROC CARDINALITY
Erklärung :
Dieses Beispiel folgt der Logik der Originaldokumentation. Es analysiert die Variable 'engineSize' aus dem Datensatz 'mylib.cars'. Die Option `ORDER=ASC` wird in der VAR-Anweisung verwendet, um eine aufsteigende Sortierung der Ebenen von 'engineSize' zu erzwingen, wobei mögliche Formate ignoriert werden. `MAXLEVELS=5` begrenzt die detaillierte Anzeige auf die ersten 5 Ebenen. Die Ausgabetabellen `outcard` und `outdetails` werden verwendet, um die Ergebnisse zu speichern und anzuzeigen.
Kopiert!
1/* Étape DATA pour charger sashelp.cars dans une bibliothèque CAS */
2LIBNAME mylib cas;
3DATA mylib.cars;
4 SET sashelp.cars;
5RUN;
6 
7/* Forcer un ordre ascendant sur 'engineSize' */
8title 'Cardinalité de engineSize avec ordre ascendant et MAXLEVELS';
9PROC CARDINALITY DATA=mylib.cars outcard=mylib.card_asc outdetails=mylib.details_asc maxlevels=5;
10 var engineSize / order=asc;
11RUN;
12 
13PROC PRINT DATA=mylib.card_asc;
14 var _varname_ _order_ _more_ _cardinality_;
15 title 'Résumé de la cardinalité (Ordre ASC)';
16RUN;
17 
18/* Afficher les détails des niveaux */
19PROC PRINT DATA=mylib.details_asc;
20 title 'Détails des niveaux de engineSize (Ordre ASC)';
21RUN;
3 Codeblock
PROC CARDINALITY Data
Erklärung :
Dieses fortgeschrittene Beispiel zeigt, wie eine kategoriale Variable (`Status`) mit einem Benutzerformat (`$statusfmt.`) verwaltet wird. Der Datensatz `mylib.employees` wird mit `datalines` erstellt und dann in CAS geladen. Die CARDINALITY-Prozedur wird mit `ORDER=DESC` verwendet, um die eindeutigen Ebenen von 'Status' in absteigender Reihenfolge basierend auf ihren Rohwerten (A, I, S) zu sortieren, und nicht nach ihren angezeigten Formaten (Actif, Inactif, Suspendu).
Kopiert!
1/* Création de données avec un format utilisateur et chargement en CAS */
2LIBNAME mylib cas;
3 
4PROC FORMAT;
5 value $statusfmt 'A' = 'Actif' 'I' = 'Inactif' 'S' = 'Suspendu';
6RUN;
7 
8DATA mylib.employees;
9 INPUT EmployeeID STATUS $ Salary;
10 FORMAT STATUS $statusfmt.;
11 DATALINES;
12101 A 50000
13102 I 60000
14103 A 55000
15104 S 70000
16105 A 48000
17106 I 62000
18107 S 75000
19108 A 51000
20109 I 58000
21110 A 53000
22;
23RUN;
24 
25/* Analyse de la cardinalité avec ordre descendant pour la variable Status */
26title 'Cardinalité de Status avec ordre descendant sur les valeurs brutes';
27PROC CARDINALITY DATA=mylib.employees outcard=mylib.card_desc outdetails=mylib.details_desc maxlevels=3;
28 var STATUS / order=desc;
29RUN;
30 
31PROC PRINT DATA=mylib.card_desc;
32 var _varname_ _order_ _cardinality_;
33 title 'Résumé de la cardinalité (Ordre DESC)';
34RUN;
35 
36PROC PRINT DATA=mylib.details_desc;
37 title 'Détails des niveaux de Status (Ordre DESC)';
38RUN;
4 Codeblock
PROC CARDINALITY
Erklärung :
Dieses Beispiel hebt fortgeschrittenere Funktionen von `PROC CARDINALITY` in einer CAS-Umgebung hervor. Es verwendet die Anweisung `GROUP BY`, um die Kardinalität der Variablen `Type` separat für jede `Origin` (Herkunftsland) zu berechnen. Die Option `ORDER=FREQ` wird angewendet, um die Ebenen von `Type` nach ihrer Häufigkeit zu sortieren. Ein bewusst niedriges `MAXLEVELS=2` wird verwendet, um zu zeigen, wie die Spalte `_MORE_` nicht gemeldete Ebenen anzeigt, was einen Fall simuliert, in dem bestimmte Gruppen mehr eindeutige Ebenen haben könnten, als angezeigt werden. Dies demonstriert die Verwaltung großer Datenmengen und die Fähigkeit, Probleme mit hoher Kardinalität pro Gruppe schnell zu identifizieren.
Kopiert!
1/* Assurez-vous que sashelp.cars est chargé en CAS */
2LIBNAME mylib cas;
3DATA mylib.cars;
4 SET sashelp.cars;
5RUN;
6 
7/* Analyse de cardinalité groupée avec un MAXLEVELS très bas pour simuler un dépassement */
8title 'Cardinalité groupée avec peu de niveaux affichés';
9PROC CARDINALITY DATA=mylib.cars outcard=mylib.card_grouped outdetails=mylib.details_grouped maxlevels=2;
10 var Type / order=freq;
11 class Origin;
12 group BY Origin;
13RUN;
14 
15PROC PRINT DATA=mylib.card_grouped;
16 var Origin _varname_ _order_ _cardinality_;
17 title 'Résumé de la cardinalité groupée';
18RUN;
19 
20PROC PRINT DATA=mylib.details_grouped;
21 where _varname_ = 'Type';
22 title 'Détails des niveaux de Type (groupé par Origin)';
23RUN;
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.