Este script primero genera un conjunto de datos de prueba (wbh) que contiene combinaciones simuladas de edad y raza a través de bucles anidados. Luego realiza una transformación avanzada en un paso DATA utilizando un ARRAY y la instrucción RETAIN para manipular los datos horizontalmente (tipo pivote) y calcular sumas, con un reinicio de las variables al cambiar el grupo de edad.
Análisis de datos
Type : CREATION_INTERNE
Los datos son generados completamente por el código a través de bucles DO anidados; no se requiere ninguna fuente externa.
1 Bloque de código
DATA STEP Data
Explicación : Creación del conjunto de datos 'wbh' mediante simulación. Dos bucles anidados generan observaciones para 10 edades y 8 razas, calculando una variable 'n' como producto de ambas.
¡Copiado!
data wbh;
do age=1 to 10;
do race=1 to 8;
n=age*race;
output;
end;
end;
run;
1
DATA wbh;
2
DO age=1 to 10;
3
DO race=1 to 8;
4
n=age*race;
5
OUTPUT;
6
END;
7
END;
8
RUN;
2 Bloque de código
PROC PRINT
Explicación : Visualización del contenido de la tabla 'wbh' generada previamente.
¡Copiado!
proc print;run;
1
PROC PRINT;RUN;
3 Bloque de código
DATA STEP Data
Explicación : Transformación de los datos. Uso de un array 'a' (variables m1-m8) con RETAIN para conservar los valores entre iteraciones. El bucle 'do i=1 to 8' reinicia los valores a valores faltantes (.) al comienzo de cada grupo de edad (first.age). El valor 'n' se asigna al índice correspondiente a la 'raza', y se calcula una suma total 'totn'.
¡Copiado!
data test; set wbh; by age race;
array a(8) m1-m8;
retain m1-m8;
do i=1 to 8;
if first.age then do;
a(i)=.;
end;
end;
a(race)=n;
totn=sum(of m1-m8);
run;
1
DATA test; SET wbh; BY age race;
2
array a(8) m1-m8;
3
retain m1-m8;
4
DO i=1 to 8;
5
IF first.age THENDO;
6
a(i)=.;
7
END;
8
END;
9
10
a(race)=n;
11
totn=sum(of m1-m8);
12
RUN;
4 Bloque de código
PROC PRINT
Explicación : Visualización del resultado final contenido en la tabla 'test'.
¡Copiado!
proc print;run;
1
PROC PRINT;RUN;
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.