Publié le :
Reporting SASHELP

Analyse et Reporting Qualité Air

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script commence par créer dynamiquement un format SAS© personnalisé (`pct_`) qui associe des plages de valeurs numériques à des couleurs (du bleu au rouge) pour représenter des niveaux de 'froid' à 'chaud'. Ensuite, il utilise PROC SQL pour déterminer les valeurs minimales et maximales de la variable 'air' dans le dataset SASHELP.AIR. Un DATA STEP subséquent calcule un indicateur de 'pourcentage' de qualité de l'air, normalisé par rapport à ces min/max. Enfin, PROC TABULATE est employée avec ODS HTML pour générer un rapport visuel, où les cellules du tableau sont colorées selon l'indice de pourcentage, offrant une vue claire des variations de la qualité de l'air au fil du temps.
Analyse des données

Type : SASHELP


Les données proviennent du jeu de données SASHELP.AIR, un exemple de données intégré à SAS.

1 Bloc de code
DATA STEP
Explication :
Ce bloc DATA _NULL_ génère dynamiquement une procédure PROC FORMAT. Il crée un format nommé `pct_` qui mappe des valeurs numériques (représentant un pourcentage de 0 à 1) à des codes couleur hexadécimaux. Les couleurs varient progressivement du bleu (froid, faible pourcentage) au rouge (chaud, pourcentage élevé). Les valeurs hors de la plage définie reçoivent une couleur grise par défaut.
Copié !
1* Create a format to display colors ranging from Blue (cold) to Red (hot) ;
2DATA _null_ ;
3 call execute('proc format fmtlib ; value pct_') ;
4 max=1;
5 maxloop=255 ;
6 DO i=1 to maxloop ;
7 color='cx'||put(i/maxloop*255,hex2.)||'00'||put((maxloop-i)/maxloop*255,hex2.) ;
8 from=((i-1)/maxloop)*max ;
9 to=(i/maxloop)*max ;
10 call execute(put(from,best.)||'-'||put(to,best.)||'='||quote(color)) ;
11 END ;
12 call execute('.="light gray" other="cxd0d0d0" ; run ;') ;
13RUN ;
2 Bloc de code
PROC SQL
Explication :
Utilise PROC SQL pour extraire les valeurs maximale et minimale de la variable 'air' du dataset `sashelp.air`. Ces valeurs sont ensuite stockées dans les macro-variables `&max` et `&min`. Une macro-variable `&range` est calculée pour obtenir l'étendue totale entre le minimum et le maximum, ce qui servira à normaliser les données par la suite.
Copié !
1* get the maximum value of air ;
2PROC SQL ;
3 select max(air),min(air) into :max,:min from sashelp.air ;
4%let range=%sysevalf(&max-&min) ;
3 Bloc de code
DATA STEP Data
Explication :
Ce DATA STEP crée un nouveau dataset temporaire nommé 'air'. Il lit le dataset `sashelp.air`, extrait l'année et le mois de la variable 'date', puis calcule une nouvelle variable 'pct'. Cette variable 'pct' représente la valeur de 'air' normalisée, exprimée comme un pourcentage au-dessus du minimum et dans la plage définie par `&range`. Elle quantifie la qualité de l'air relative.
Copié !
1* express values of air as a percentage of the maximum ;
2DATA air ;
3 SET sashelp.air ;
4 year=year(date) ;
5 month=month(date) ;
6 * percentage is the level above the minimum ;
7 pct=(air-&min)/&range ;
8RUN ;
4 Bloc de code
PROC TABULATE
Explication :
Ce bloc génère un rapport HTML interactif ('test.html') en utilisant ODS HTML et PROC TABULATE. Il affiche un tableau croisé dynamique de la variable 'pct' (qualité de l'air en pourcentage), classée par année et par mois. Le style des cellules est modifié en appliquant le format `pct_` créé précédemment, ce qui colore l'arrière-plan des cellules du tableau en fonction de la valeur 'pct', du bleu (meilleur) au rouge (pire), pour une visualisation intuitive de la qualité de l'air.
Copié !
1* tabulate the results indicating maximum as red, minimum as blue ;
2ods html file='test.html' ;
3title 'Air Quality over the years' ;
4footnote 'Blue (cold) is best, Red (hot) is worst' ;
5PROC TABULATE DATA=air style={background=pct_.} ;
6 class year month ;
7 var pct ;
8 label pct='Air Quality Percent of worst month' ;
9 TABLE sum=''*pct*f=percent.,year='Year',month='Month of Year' ;
10RUN ;
11ods html close ;
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.