Ne subissez plus le tri par défaut : Personnalisez l'ordre de vos sorties PROC FREQ

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Simon

Le Conseil de l'Expert

Simon
Expert SAS et fondateur.

La maîtrise de l'option ORDER= dans la PROC FREQ est essentielle pour transformer un simple comptage en un outil d'aide à la décision. Par défaut, SAS trie les résultats selon les valeurs internes (non formatées), ce qui est rarement optimal pour la lecture. Ce script illustre parfaitement la hiérarchie du tri : de l'ordre statistique pur (ORDER=FREQ), idéal pour identifier les catégories dominantes, à l'ordre sémantique (ORDER=FORMATTED), indispensable lorsque vous utilisez une PROC FORMAT pour regrouper vos données.

Le script démontre plusieurs méthodes pour ordonner un rapport de fréquence. Il commence par l'ordre par défaut basé sur les valeurs internes de la variable, puis montre comment trier par fréquence décroissante. Ensuite, une mise en forme personnalisée est créée avec PROC FORMAT pour regrouper des valeurs. Le script illustre alors comment le tri peut être basé sur ces valeurs formatées ou sur la fréquence des occurrences de ces nouvelles valeurs formatées.
Analyse des données

Type : SASHELP


Le script utilise exclusivement la table 'cars' de la bibliothèque standard SASHELP. Aucune donnée externe n'est nécessaire.

1 Bloc de code
PROC FREQ
Explication :
Ce bloc exécute une procédure FREQ sur la variable 'type' de la table 'sashelp.cars'. Par défaut, les résultats sont triés selon les valeurs internes (non formatées) de la variable 'type'.
Copié !
1title "Ordered by Unformatted Values of TYPE (default)";
2PROC FREQ DATA=sashelp.cars; /*1*/
3 tables type;
4RUN;
2 Bloc de code
PROC FREQ
Explication :
Ce bloc utilise l'option 'order=freq' pour trier les résultats de la procédure FREQ en fonction de la fréquence décroissante de chaque modalité de la variable 'type'.
Copié !
1title "Ordered by Descending Frequency of TYPE";
2PROC FREQ DATA=sashelp.cars order=freq; /*2*/
3 tables type;
4RUN;
3 Bloc de code
PROC FORMAT Data
Explication :
Ce bloc utilise PROC FORMAT pour créer un format personnalisé nommé 'FuelEff'. Ce format catégorise les valeurs numériques en trois groupes : 'Low', 'Mid', et 'High'.
Copié !
1PROC FORMAT; /*3*/
2 value FuelEff low-20="Low"
3 20<-30="Mid"
4 30<-high="High";
5RUN;
4 Bloc de code
PROC FREQ
Explication :
Ce bloc applique le format 'FuelEff.' à la variable 'MPG_Highway'. L'ordre de tri par défaut reste basé sur les valeurs internes (non formatées) de 'MPG_Highway', bien que les libellés du format soient affichés.
Copié !
1title "Ordered by Unformatted Values of MPG_Highway";
2PROC FREQ DATA=sashelp.cars; /*4*/
3 tables MPG_Highway;
4 FORMAT MPG_Highway FuelEff.;
5RUN;
5 Bloc de code
PROC FREQ
Explication :
Grâce à l'option 'order=formatted', les résultats sont maintenant triés selon l'ordre alphabétique des libellés du format 'FuelEff' appliqué à 'MPG_Highway' (donc 'High', 'Low', 'Mid').
Copié !
1title "Ordered by Formatted Values of MPG_Highway";
2PROC FREQ DATA=sashelp.cars order=formatted; /*5*/
3 tables MPG_Highway;
4 FORMAT MPG_Highway FuelEff.;
5RUN;
6 Bloc de code
PROC FREQ
Explication :
Ce dernier bloc combine l'application du format avec l'option 'order=freq'. Les résultats sont triés par fréquence décroissante des groupes définis par le format 'FuelEff'.
Copié !
1title "Ordered by Descending Frequency of Formatted values of MPG_Highway";
2PROC FREQ DATA=sashelp.cars order=freq; /*6*/
3 tables MPG_Highway;
4 FORMAT MPG_Highway FuelEff.;
5RUN;
L'Astuce Pro
Pour garantir un tri logique respectant l ordre de vos categories (Low, Mid, High) plutot que l ordre alphabetique des labels, utilisez l option ORDER=INTERNAL : cela force la PROC FREQ a classer les donnees selon les valeurs numeriques sous-jacentes de la variable MPG_Highway tout en affichant vos libelles de format personnalises, evitant ainsi que High ne se retrouve entre Low et Mid a cause du tri par defaut.
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.

Documentation liée

Aucune documentation spécifique pour cette catégorie.