Le script commence par créer un jeu de données 'my_data' avec des informations sur les catégories, les séries et les montants. Ensuite, il utilise PROC SQL pour calculer la somme totale des montants pour chaque catégorie ('bartotal'). Un second DATA STEP est utilisé pour calculer le pourcentage de chaque montant par rapport au total de sa catégorie ('catpct') et appliquer un format de pourcentage. Enfin, la sortie ODS est configurée pour générer un fichier HTML et une image PNG. PROC SGPLOT est utilisée pour créer le diagramme à barres horizontales empilées à 100%, en utilisant 'category' sur l'axe des Y, 'catpct' comme réponse, et 'series' pour le regroupement des barres. Des titres et des attributs de style sont appliqués pour améliorer la présentation.
Analyse des données
Type : CREATION_INTERNE
Les données initiales sont créées directement dans le script via un bloc DATALINES dans un DATA STEP. Elles sont ensuite transformées et enrichies par des étapes PROC SQL et DATA STEP ultérieures.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée un jeu de données nommé 'my_data'. Il utilise la déclaration 'input' pour définir trois variables (CATEGORY, SERIES, AMOUNT) et le bloc 'datalines' pour lire directement les données dans le jeu de données.
Copié !
data my_data;
input CATEGORY SERIES $ 3-11 AMOUNT;
datalines;
1 Series A 5.0
2 Series A 6.8
3 Series A 9.2
1 Series B 6.5
2 Series B 6.9
3 Series B 5.6
1 Series C 2.3
2 Series C 3.1
3 Series C 2.3
;
run;
1
DATA my_data;
2
INPUT CATEGORY SERIES $ 3-11 AMOUNT;
3
DATALINES;
4
1 Series A 5.0
5
2 Series A 6.8
6
3 Series A 9.2
7
1 Series B 6.5
8
2 Series B 6.9
9
3 Series B 5.6
10
1 Series C 2.3
11
2 Series C 3.1
12
3 Series C 2.3
13
;
14
RUN;
2 Bloc de code
PROC SQL Data
Explication : Cette procédure SQL modifie le jeu de données 'my_data'. Elle calcule la somme des 'amount' pour chaque 'category', stocke ce total dans une nouvelle colonne 'bartotal', et recrée le jeu de données 'my_data' avec cette nouvelle colonne. C'est une étape d'agrégation essentielle pour les calculs de pourcentage.
Copié !
proc sql;
create table my_data as
select *, sum(amount) as bartotal
from my_data
group by category;
quit; run;
1
PROC SQL;
2
create TABLE my_data as
3
select *, sum(amount) as bartotal
4
from my_data
5
group BY category;
6
QUIT; RUN;
3 Bloc de code
DATA STEP
Explication : Ce DATA STEP met à jour le jeu de données existant 'my_data'. Il calcule le pourcentage ('catpct') de chaque 'amount' par rapport au 'bartotal' correspondant. Une mise en forme 'percent6.0' est appliquée à la nouvelle variable 'catpct' pour un affichage en pourcentage.
Copié !
data my_data; set my_data;
format catpct percent6.0;
catpct=amount/bartotal;
run;
1
DATA my_data; SET my_data;
2
FORMAT catpct percent6.0;
3
catpct=amount/bartotal;
4
RUN;
4 Bloc de code
PROC SGPLOT
Explication : Ce bloc gère la sortie et la visualisation. Les déclarations ODS (Output Delivery System) sont utilisées pour générer une sortie HTML et une image PNG du graphique. La PROC SGPLOT est ensuite appelée pour créer un diagramme à barres horizontales empilées à 100%. Elle utilise 'category' sur l'axe Y, 'catpct' comme variable de réponse, et 'series' pour grouper les barres, affichant ainsi la contribution proportionnelle de chaque série au sein de chaque catégorie. Des options de style, de titres et d'axes sont configurées pour personnaliser l'apparence du graphique.
Copié !
ODS LISTING CLOSE;
ODS HTML path=odsout body="&name..htm"
(title="SGplot 100% Stacked Horizontal Bar")
style=htmlblue;
ods graphics / imagefmt=png imagename="&name"
width=800px height=600px noborder imagemap;
title1 color=gray33 ls=0.5 h=23pt "100% Stacked Horizontal Bar";
title2 color=gray33 ls=0.5 h=17pt "Compares the percent each value";
title3 color=gray33 ls=0.5 h=17pt "to a total across categories";
proc sgplot data=my_data noautolegend pad=(left=10% right=15%);
label catpct='PERCENT';
styleattrs datacolors=(cx9999ff cx993366 cxffffcc);
hbar category / response=catpct stat=sum
group=series /*barwidth=.6*/
outlineattrs=(color=black) nostatlabel;
xaxis
values=(0 to 1 by .2)
labelattrs=(size=16pt weight=bold color=gray33)
valueattrs=(size=16pt weight=bold color=gray33)
offsetmax=0 grid minor minorcount=1;
yaxis
labelattrs=(size=16pt weight=bold color=gray33)
valueattrs=(size=16pt weight=bold color=gray33)
display=(noticks);
run;
quit;
ODS HTML CLOSE;
ODS LISTING;
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.