El script comienza creando un conjunto de datos 'my_data' con información sobre categorías, series y montos. Luego, utiliza PROC SQL para calcular la suma total de los montos para cada categoría ('bartotal'). Un segundo DATA STEP se utiliza para calcular el porcentaje de cada monto en relación con el total de su categoría ('catpct') y aplicar un formato de porcentaje. Finalmente, la salida ODS se configura para generar un archivo HTML y una imagen PNG. PROC SGPLOT se utiliza para crear el diagrama de barras horizontales apiladas al 100%, usando 'category' en el eje Y, 'catpct' como respuesta, y 'series' para la agrupación de barras. Se aplican títulos y atributos de estilo para mejorar la presentación.
Análisis de datos
Type : CREATION_INTERNE
Los datos iniciales se crean directamente en el script a través de un bloque DATALINES en un DATA STEP. Luego se transforman y enriquecen mediante pasos PROC SQL y DATA STEP posteriores.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA STEP crea un conjunto de datos llamado 'my_data'. Utiliza la declaración 'input' para definir tres variables (CATEGORY, SERIES, AMOUNT) y el bloque 'datalines' para leer directamente los datos en el conjunto de datos.
¡Copiado!
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 Bloque de código
PROC SQL Data
Explicación : Este procedimiento SQL modifica el conjunto de datos 'my_data'. Calcula la suma de 'amount' para cada 'category', almacena este total en una nueva columna 'bartotal', y recrea el conjunto de datos 'my_data' con esta nueva columna. Es un paso de agregación esencial para los cálculos de porcentaje.
¡Copiado!
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 Bloque de código
DATA STEP
Explicación : Este DATA STEP actualiza el conjunto de datos existente 'my_data'. Calcula el porcentaje ('catpct') de cada 'amount' en relación con el 'bartotal' correspondiente. Se aplica un formato 'percent6.0' a la nueva variable 'catpct' para una visualización en porcentaje.
¡Copiado!
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 Bloque de código
PROC SGPLOT
Explicación : Este bloque gestiona la salida y la visualización. Las declaraciones ODS (Output Delivery System) se utilizan para generar una salida HTML y una imagen PNG del gráfico. Luego se llama a PROC SGPLOT para crear un diagrama de barras horizontales apiladas al 100%. Utiliza 'category' en el eje Y, 'catpct' como variable de respuesta y 'series' para agrupar las barras, mostrando así la contribución proporcional de cada serie dentro de cada categoría. Se configuran opciones de estilo, títulos y ejes para personalizar la apariencia del gráfico.
¡Copiado!
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;
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.