El procedimiento CARDINALITY permite analizar la cardinalidad de las variables de un conjunto de datos CAS. Puede identificar el número de niveles únicos para cada variable especificada y, si el número de niveles excede un límite definido (MAXLEVELS), informa los niveles más frecuentes. La opción ORDER= en la instrucción VAR permite especificar un orden de clasificación (por ejemplo, ASC para ascendente, DESC para descendente) para la selección y visualización de los niveles de la variable, ignorando así los formatos de usuario predeterminados o el orden alfabético estándar. Este ejemplo muestra cómo aplicar un orden numérico ascendente a la variable 'engineSize'.
Análisis de datos
Type : SASHELP / CREATION_INTERNE
Los ejemplos utilizan el conjunto de datos integrado 'sashelp.cars' y datos generados a través de DATA Step para garantizar la autonomía.
1 Bloque de código
PROC CARDINALITY
Explicación : Este ejemplo ilustra el uso más simple del procedimiento CARDINALITY. Carga el conjunto de datos 'sashelp.cars' en una sesión CAS (mylib.cars) y luego analiza las variables 'Make', 'Model' y 'Type' para determinar su cardinalidad sin especificar un orden particular. Los resultados se almacenan en 'mylib.card_basic' y se muestran. El orden predeterminado es alfabético o por orden de frecuencia si se alcanza un umbral.
¡Copiado!
/* É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 */
Explicación : Este ejemplo retoma la lógica de la documentación original. Analiza la variable 'engineSize' del conjunto de datos 'mylib.cars'. La opción `ORDER=ASC` se usa en la instrucción VAR para forzar una clasificación ascendente de los niveles de 'engineSize', ignorando cualquier formato. `MAXLEVELS=5` limita la visualización detallada a los 5 primeros niveles. Las tablas de salida `outcard` y `outdetails` se usan para almacenar y mostrar los resultados.
¡Copiado!
/* É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 Bloque de código
PROC CARDINALITY Data
Explicación : Este ejemplo avanzado muestra cómo manejar una variable categórica (`Status`) con un formato de usuario (`$statusfmt.`). El conjunto de datos `mylib.employees` se crea con `datalines` y luego se carga en CAS. El procedimiento CARDINALITY se utiliza con `ORDER=DESC` para ordenar los niveles únicos de 'Status' en orden descendente basado en sus valores brutos (A, I, S), y no en sus formatos mostrados (Actif, Inactif, Suspendu).
¡Copiado!
/* 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 Bloque de código
PROC CARDINALITY
Explicación : Este ejemplo destaca funcionalidades más avanzadas de `PROC CARDINALITY` en un entorno CAS. Utiliza la instrucción `GROUP BY` para calcular la cardinalidad de la variable `Type` por separado para cada `Origin` (país de origen). La opción `ORDER=FREQ` se aplica para ordenar los niveles de `Type` por su frecuencia de aparición. Un `MAXLEVELS=2` es deliberadamente bajo para mostrar cómo la columna `_MORE_` indica los niveles no informados, simulando un caso en el que algunos grupos podrían tener más niveles únicos de los que se muestran. Esto demuestra el manejo de grandes volúmenes de datos y la capacidad de identificar rápidamente problemas de alta cardinalidad por grupo.
¡Copiado!
/* 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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.