Publicado el :
ETL CREACIÓN_INTERNA

Transformación y Reestructuración de Datos con PROC TRANSPOSE

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script SAS© muestra cómo convertir una estructura de datos 'ancha' en 'larga' (o viceversa, según el punto de vista) utilizando el procedimiento TRANSPOSE. Primero genera datos internos, realiza una transposición gestionando los nombres de las columnas a través de un prefijo, y luego utiliza un DATA STEP para aplicar nombres de variables de negocio significativos.
Análisis de datos

Type : CREACIÓN_INTERNA


Los datos se generan directamente en el script a través de la instrucción DATALINES en el DATA Step que crea la tabla MYSASLIB.SUBJECTS.

1 Bloque de código
DATA STEP Data
Explicación :
Creación de una tabla de ejemplo 'SUBJECTS' en la biblioteca 'MYSASLIB' que contiene 4 columnas de caracteres, alimentada con datos estáticos (DATALINES).
¡Copiado!
1DATA MYSASLIB.SUBJECTS;
2 
3INPUT SUB1 $ SUB2 $ SUB3 $ SUB4 $;
4DATALINES;
512 21 13 14
613 21 12 14
715 31 23 23
815 33 21 32
9 M F F M
10;
2 Bloque de código
PROC TRANSPOSE Data
Explicación :
Transposición simple de las variables SUB1 a SUB4. Las nuevas columnas generadas tomarán los nombres por defecto (COL1, COL2, etc.).
¡Copiado!
1 
2PROC TRANSPOSE
3DATA=MYSASLIB.SUBJECTS OUT=MYSASLIB.TRANSPOSED;
4VAR SUB1 SUB2 SUB3 SUB4;
5RUN;
6 
3 Bloque de código
PROC TRANSPOSE Data
Explicación :
Segunda transposición de las mismas variables, pero utilizando la opción PREFIX=INFO para nombrar las columnas resultantes (INFO1, INFO2, etc.).
¡Copiado!
1 
2PROC TRANSPOSE
3DATA=MYSASLIB.SUBJECTS OUT=MYSASLIB.TRANSPOSED2 PREFIX=INFO;
4VAR SUB1 SUB2 SUB3 SUB4;
5RUN;
6 
4 Bloque de código
PROC PRINT
Explicación :
Visualización del resultado de la segunda transposición para verificación.
¡Copiado!
1PROC PRINT DATA=MYSASLIB.TRANSPOSED2;
2RUN;
5 Bloque de código
DATA STEP Data
Explicación :
Creación de la tabla final 'NEW_SUBJ' a partir de la tabla transpuesta. Uso de la instrucción RENAME para asignar nombres de negocio a las columnas generadas automáticamente.
¡Copiado!
1DATA MYSASLIB.NEW_SUBJ;
2SET MYSASLIB.TRANSPOSED2;
3RENAME INFO1=T1 INFO2=T2
4 INFO3=T3 INFO4=T4
5 INFO5=GENDER _NAME_=SUBJECT;
6RUN;
6 Bloque de código
PROC PRINT
Explicación :
Informe final que muestra los datos reestructurados y renombrados, con un título y una nota al pie.
¡Copiado!
1PROC PRINT DATA=MYSASLIB.NEW_SUBJ;
2RUN;
3TITLE 'transpose function';
4FOOTNOTE 'result of TP';
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.
Información de copyright : (C) 2016 Elliott, Alan C. and Woodward, Wayne A.