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!
/* Étape DATA pour charger sashelp.cars dans une bibliothèque CAS */
libname mylib cas;
data mylib.cars;
set sashelp.cars;
run;
/* Utilisation de base de PROC CARDINALITY */
title 'Cardinalité des variables par défaut';
proc cardinality data=mylib.cars outcard=mylib.card_basic;
var Make Model Type;
run;
proc print data=mylib.card_basic;
var _varname_ _order_ _cardinality_;
title 'Résumé de la cardinalité (Basique)';
run;
1
/* Étape DATA pour charger sashelp.cars dans une bibliothèque CAS */
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!
/* Étape DATA pour charger sashelp.cars dans une bibliothèque CAS */
libname mylib cas;
data mylib.cars;
set sashelp.cars;
run;
/* Forcer un ordre ascendant sur 'engineSize' */
title 'Cardinalité de engineSize avec ordre ascendant et MAXLEVELS';
proc cardinality data=mylib.cars outcard=mylib.card_asc outdetails=mylib.details_asc maxlevels=5;
var engineSize / order=asc;
run;
proc print data=mylib.card_asc;
var _varname_ _order_ _more_ _cardinality_;
title 'Résumé de la cardinalité (Ordre ASC)';
run;
/* Afficher les détails des niveaux */
proc print data=mylib.details_asc;
title 'Détails des niveaux de engineSize (Ordre ASC)';
run;
1
/* Étape DATA pour charger sashelp.cars dans une bibliothèque CAS */
2
LIBNAME mylib cas;
3
DATA mylib.cars;
4
SET sashelp.cars;
5
RUN;
6
7
/* Forcer un ordre ascendant sur 'engineSize' */
8
title 'Cardinalité de engineSize avec ordre ascendant et MAXLEVELS';
title 'Détails des niveaux de engineSize (Ordre ASC)';
21
RUN;
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!
/* Création de données avec un format utilisateur et chargement en CAS */
libname mylib cas;
proc format;
value $statusfmt 'A' = 'Actif' 'I' = 'Inactif' 'S' = 'Suspendu';
run;
data mylib.employees;
input EmployeeID Status $ Salary;
format Status $statusfmt.;
datalines;
101 A 50000
102 I 60000
103 A 55000
104 S 70000
105 A 48000
106 I 62000
107 S 75000
108 A 51000
109 I 58000
110 A 53000
;
run;
/* Analyse de la cardinalité avec ordre descendant pour la variable Status */
title 'Cardinalité de Status avec ordre descendant sur les valeurs brutes';
proc cardinality data=mylib.employees outcard=mylib.card_desc outdetails=mylib.details_desc maxlevels=3;
var Status / order=desc;
run;
proc print data=mylib.card_desc;
var _varname_ _order_ _cardinality_;
title 'Résumé de la cardinalité (Ordre DESC)';
run;
proc print data=mylib.details_desc;
title 'Détails des niveaux de Status (Ordre DESC)';
run;
1
/* Création de données avec un format utilisateur et chargement en CAS */
2
LIBNAME mylib cas;
3
4
PROC FORMAT;
5
value $statusfmt 'A' = 'Actif''I' = 'Inactif''S' = 'Suspendu';
6
RUN;
7
8
DATA mylib.employees;
9
INPUT EmployeeID STATUS $ Salary;
10
FORMATSTATUS $statusfmt.;
11
DATALINES;
12
101 A 50000
13
102 I 60000
14
103 A 55000
15
104 S 70000
16
105 A 48000
17
106 I 62000
18
107 S 75000
19
108 A 51000
20
109 I 58000
21
110 A 53000
22
;
23
RUN;
24
25
/* Analyse de la cardinalité avec ordre descendant pour la variable Status */
26
title 'Cardinalité de Status avec ordre descendant sur les valeurs brutes';
title 'Détails des niveaux de Status (Ordre DESC)';
38
RUN;
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!
/* Assurez-vous que sashelp.cars est chargé en CAS */
libname mylib cas;
data mylib.cars;
set sashelp.cars;
run;
/* Analyse de cardinalité groupée avec un MAXLEVELS très bas pour simuler un dépassement */
title 'Cardinalité groupée avec peu de niveaux affichés';
proc cardinality data=mylib.cars outcard=mylib.card_grouped outdetails=mylib.details_grouped maxlevels=2;
var Type / order=freq;
class Origin;
group by Origin;
run;
proc print data=mylib.card_grouped;
var Origin _varname_ _order_ _cardinality_;
title 'Résumé de la cardinalité groupée';
run;
proc print data=mylib.details_grouped;
where _varname_ = 'Type';
title 'Détails des niveaux de Type (groupé par Origin)';
run;
1
/* Assurez-vous que sashelp.cars est chargé en CAS */
2
LIBNAME mylib cas;
3
DATA mylib.cars;
4
SET sashelp.cars;
5
RUN;
6
7
/* Analyse de cardinalité groupée avec un MAXLEVELS très bas pour simuler un dépassement */
8
title 'Cardinalité groupée avec peu de niveaux affichés';
title 'Détails des niveaux de Type (groupé par Origin)';
23
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.