Les exemples utilisent des données générées à partir de la bibliothèque SASHELP (iris) chargée en session CAS.
1 Bloc de code
PROC CARDINALITY / DATA STEP Data
Explication : Cet exemple illustre l'utilisation la plus simple de PROC CARDINALITY. Il charge le jeu de données 'sashelp.iris' dans une session CAS sous le nom 'mycas.iris'. Ensuite, il exécute la procédure CARDINALITY pour la variable 'Species', générant un tableau de cardinalité ('outcard') et un tableau de détails des niveaux ('outdetails'). Les résultats sont affichés à l'aide de PROC PRINT.
Copié !
CAS;
libname mycas cas;
/* Charger le jeu de données Iris de SASHELP vers la session CAS */
data mycas.iris;
set sashelp.iris;
run;
/* Exemple 1 : Utilisation Basique pour la variable Species */
proc cardinality data=mycas.iris outcard=mycas.card_species outdetails=mycas.details_species;
var Species;
run;
proc print data=mycas.card_species;
title 'Cardinalité basique pour la variable Species';
run;
proc print data=mycas.details_species;
title 'Détails des niveaux pour la variable Species';
run;
1
CAS;
2
LIBNAME mycas cas;
3
4
/* Charger le jeu de données Iris de SASHELP vers la session CAS */
5
DATA mycas.iris;
6
SET sashelp.iris;
7
RUN;
8
9
/* Exemple 1 : Utilisation Basique pour la variable Species */
title 'Cardinalité basique pour la variable Species';
16
RUN;
17
18
PROC PRINTDATA=mycas.details_species;
19
title 'Détails des niveaux pour la variable Species';
20
RUN;
2 Bloc de code
PROC CARDINALITY / PROC SGPLOT
Explication : Cet exemple démontre l'utilisation des options 'MAXLEVELS' pour limiter le nombre de niveaux détaillés affichés et 'DESCENDING' pour trier ces niveaux par fréquence de manière décroissante. Il génère également un histogramme pour visualiser la distribution des 10 niveaux de 'SepalLength' les plus fréquents.
Copié !
/* Exemple 2 : Utilisation avec des options courantes (MAXLEVELS et DESCENDING) */
/* Analyse de SepalLength avec un nombre limité de niveaux affichés et tri décroissant */
proc cardinality data=mycas.iris outcard=mycas.card_sepal_full outdetails=mycas.details_sepal_full maxlevels=10 descending;
var SepalLength;
run;
proc print data=mycas.card_sepal_full;
title 'Cardinalité complète pour SepalLength (10 niveaux max, ordre décroissant)';
run;
proc sgplot data=mycas.details_sepal_full;
vbar _cfmt_ / freq=_freq_ categoryorder=data;
title 'Histogramme des 10 niveaux les plus fréquents de SepalLength';
run;
1
/* Exemple 2 : Utilisation avec des options courantes (MAXLEVELS et DESCENDING) */
2
/* Analyse de SepalLength avec un nombre limité de niveaux affichés et tri décroissant */
title 'Cardinalité complète pour SepalLength (10 niveaux max, ordre décroissant)';
9
RUN;
10
11
PROC SGPLOTDATA=mycas.details_sepal_full;
12
vbar _cfmt_ / freq=_freq_ categoryorder=DATA;
13
title 'Histogramme des 10 niveaux les plus fréquents de SepalLength';
14
RUN;
3 Bloc de code
PROC CARDINALITY / DATA STEP / PROC SGPLOT
Explication : Cet exemple reprend le scénario du document, en filtrant les données pour n'inclure que les observations où 'SepalLength' est supérieur à 4.7. La procédure CARDINALITY est exécutée avec 'MAXLEVELS=5', ce qui signifie que seuls les 5 niveaux les plus fréquents seront détaillés, les autres étant regroupés. Un pas DATA est utilisé pour préparer les données de sortie pour PROC SGPLOT, en ajoutant un '>' devant les valeurs regroupées pour les distinguer. Enfin, un histogramme est généré, et les informations de fréquence maximale sont affichées.
Copié !
/* Exemple 3 : Cas Avancé - Analyse des niveaux de SepalLength > 4.7 et visualisation */
proc cardinality data=mycas.iris (where=(SepalLength > 4.7))
outcard=mycas.card_sepal_gt47
outdetails=mycas.details_sepal_gt47
maxlevels=5; /* Limite à 5 niveaux pour cet exemple */
var SepalLength;
run;
/* Préparation des données pour SGPLOT : ajoute '>' aux niveaux 'Autres' pour le graphique */
data mycas.sp_gt47;
set mycas.details_sepal_gt47;
label _cfmt_='Valeur formatée de SepalLength > 4.7';
if _index_ = . then do; /* Si _index_ est manquant, c'est la catégorie 'Autres' */
_cfmt_=cats(">",_cfmt_);
end;
_cfmt_=left(_cfmt_); /* Nettoie les espaces */
run;
proc sgplot data=mycas.sp_gt47;
vbar _cfmt_ / freq=_freq_;
title 'Histogramme des niveaux de SepalLength > 4.7';
run;
/* Affichage des informations de fréquence maximale pour ce cas */
proc print data=mycas.card_sepal_gt47;
title 'Informations de fréquence maximale pour SepalLength > 4.7';
var _varname_ _mf:;
run;
1
/* Exemple 3 : Cas Avancé - Analyse des niveaux de SepalLength > 4.7 et visualisation */
maxlevels=5; /* Limite à 5 niveaux pour cet exemple */
6
var SepalLength;
7
RUN;
8
9
/* Préparation des données pour SGPLOT : ajoute '>' aux niveaux 'Autres' pour le graphique */
10
DATA mycas.sp_gt47;
11
SET mycas.details_sepal_gt47;
12
label _cfmt_='Valeur formatée de SepalLength > 4.7';
13
IF _index_ = . THENDO; /* Si _index_ est manquant, c'est la catégorie 'Autres' */
14
_cfmt_=cats(">",_cfmt_);
15
END;
16
_cfmt_=left(_cfmt_); /* Nettoie les espaces */
17
RUN;
18
19
PROC SGPLOTDATA=mycas.sp_gt47;
20
vbar _cfmt_ / freq=_freq_;
21
title 'Histogramme des niveaux de SepalLength > 4.7';
22
RUN;
23
24
/* Affichage des informations de fréquence maximale pour ce cas */
25
PROC PRINTDATA=mycas.card_sepal_gt47;
26
title 'Informations de fréquence maximale pour SepalLength > 4.7';
27
var _varname_ _mf:;
28
RUN;
4 Bloc de code
PROC CARDINALITY
Explication : Cet exemple met en évidence la capacité de la procédure CARDINALITY à s'exécuter sur des données CAS. Il analyse la cardinalité de plusieurs variables simultanément. L'option 'OUTPUT' avec 'MINRATIO' est utilisée pour identifier les variables dont la cardinalité (nombre de niveaux distincts) dépasse un certain pourcentage (ici, 80%) du nombre total d'observations, ce qui peut être utile pour détecter des identifiants ou des variables à faible variance.
Copié !
/* Exemple 4 : Intégration Viya/CAS - Analyse de plusieurs variables et détection de cardinalité */
/* Cet exemple illustre l'exécution en mémoire distribuée (CAS) */
proc cardinality data=mycas.iris outcard=mycas.multi_var_card maxlevels=10;
var SepalLength SepalWidth PetalLength PetalWidth Species;
output out=mycas.high_card_vars minratio=0.8; /* Garde les variables dont la cardinalité dépasse 80% des observations */
run;
proc print data=mycas.multi_var_card;
title 'Cardinalité pour plusieurs variables';
run;
proc print data=mycas.high_card_vars;
title 'Variables avec une cardinalité supérieure à 80% des observations';
run;
1
/* Exemple 4 : Intégration Viya/CAS - Analyse de plusieurs variables et détection de cardinalité */
2
/* Cet exemple illustre l'exécution en mémoire distribuée (CAS) */
var SepalLength SepalWidth PetalLength PetalWidth Species;
5
OUTPUT out=mycas.high_card_vars minratio=0.8; /* Garde les variables dont la cardinalité dépasse 80% des observations */
6
RUN;
7
8
PROC PRINTDATA=mycas.multi_var_card;
9
title 'Cardinalité pour plusieurs variables';
10
RUN;
11
12
PROC PRINTDATA=mycas.high_card_vars;
13
title 'Variables avec une cardinalité supérieure à 80% des observations';
14
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.