Publicado el :
ETL CREATION_INTERNE

Simulación de datos y transformación mediante Array

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
1DATA wbh;
2 DO age=1 to 10;
3 DO race=1 to 8;
4 n=age*race;
5 OUTPUT;
6 END;
7 END;
8RUN;
2 Bloque de código
PROC PRINT
Explicación :
Visualización del contenido de la tabla 'wbh' generada previamente.
¡Copiado!
1PROC 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!
1DATA 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 THEN DO;
6 a(i)=.;
7 END;
8 END;
9 
10 a(race)=n;
11 totn=sum(of m1-m8);
12RUN;
4 Bloque de código
PROC PRINT
Explicación :
Visualización del resultado final contenido en la tabla 'test'.
¡Copiado!
1PROC 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.