Reestructura una tabla que contiene registros delgados (formato largo) en una tabla que contiene registros anchos (formato ancho). Esta operación es común en la preparación de datos, donde se pivota una tabla basada en los valores de una columna de ID para crear nuevas columnas, haciendo que los datos sean más anchos y a menudo más fáciles de analizar para ciertos tipos de modelos.
| Parámetro | Descripción |
|---|---|
| table | Especifica la tabla de entrada en formato largo que se va a reestructurar. |
| id | Especifica las variables de ID cuyos valores se utilizan para crear nuevas columnas en la tabla de salida ancha. |
| inputs | Especifica las variables de valor que se distribuirán en las nuevas columnas creadas por la variable 'id'. |
| casOut | Especifica la tabla de salida para almacenar los datos reestructurados en formato ancho. |
| groupBy | Especifica una lista de variables que se utilizarán para agrupar los datos. Se crea una fila en la tabla de salida para cada grupo. |
| orderByTable | Especifica una tabla de ordenación precalculada (generalmente desde groupBy o groupByInfo) para optimizar el rendimiento. |
| maxPosition | Especifica el valor máximo de la variable de posición. Los registros con un valor de posición mayor son ignorados. |
| keyModify | Modifica los valores de caracteres en las variables 'orderBy': 'U' para mayúsculas, 'C' para condensar blancos. |
| sum | Calcula la suma de las variables especificadas para cada grupo y la añade a la tabla de salida. |
| mean | Calcula la media de las variables especificadas para cada grupo y la añade a la tabla de salida. |
| min | Calcula el mínimo de las variables especificadas para cada grupo y la añade a la tabla de salida. |
| max | Calcula el máximo de las variables especificadas para cada grupo y la añade a la tabla de salida. |
| nMiss | Calcula el número de valores perdidos para las variables especificadas en cada grupo y lo añade a la tabla de salida. |
| range | Calcula el rango de las variables especificadas para cada grupo y lo añade a la tabla de salida. |
| frequencyName | Especifica el nombre de la variable en la tabla de salida que contendrá las frecuencias. |
Este código SAS crea una tabla de datos de ejemplo en formato 'largo' llamada 'long_data'. Esta tabla contiene un identificador de grupo ('id'), una variable de tiempo ('time') y una variable de valor ('value'). Luego, se carga en CAS para ser utilizada en los ejemplos de transformación.
| 1 | DATA long_data; |
| 2 | LENGTH time $10; |
| 3 | DO id = 1 to 3; |
| 4 | DO time = 'Q1', 'Q2', 'Q3', 'Q4'; |
| 5 | value = (id * 100) + int(rand('UNIFORM') * 50); |
| 6 | OUTPUT; |
| 7 | END; |
| 8 | END; |
| 9 | RUN; |
| 10 | PROC CASUTIL; |
| 11 | load DATA=long_data outcaslib="casuser" casout="long_data" replace; |
| 12 | RUN; |
Este ejemplo transforma la tabla 'long_data' a un formato ancho 'wide_data'. Utiliza 'id' como la variable de agrupación y los valores de 'time' para crear nuevas columnas. La variable 'value' se distribuye en estas nuevas columnas.
| 1 | PROC CAS; |
| 2 | dataShaping.longToWide / |
| 3 | TABLE={name="long_data", groupBy={"id"}}, |
| 4 | id={"time"}, |
| 5 | inputs={"value"}, |
| 6 | casOut={name="wide_data", replace=true}; |
| 7 | RUN; |
Además de transformar la tabla de largo a ancho, este ejemplo calcula estadísticas agregadas (suma, media y máximo) para la variable 'value' para cada grupo 'id'. Los nombres de las nuevas columnas de estadísticas se generan automáticamente añadiendo un sufijo al nombre de la variable de entrada (por ejemplo, 'value_sum').
| 1 | PROC CAS; |
| 2 | dataShaping.longToWide / |
| 3 | TABLE={name="long_data", groupBy={"id"}}, |
| 4 | id={"time"}, |
| 5 | inputs={"value"}, |
| 6 | sum={"value"}, |
| 7 | mean={"value"}, |
| 8 | max={"value"}, |
| 9 | casOut={name="wide_data_stats", replace=true}; |
| 10 | RUN; |
Este ejemplo demuestra cómo personalizar los nombres de las columnas de salida. 'noPrefix=true' elimina el prefijo del nombre de la variable 'inputs' de las columnas de estadísticas. 'charSeparatorChar' se establece en '_' para unir el nombre de la variable 'id' y la variable de valor.
| 1 | PROC CAS; |
| 2 | dataShaping.longToWide / |
| 3 | TABLE={name="long_data", groupBy={"id"}}, |
| 4 | id={"time"}, |
| 5 | inputs={"value"}, |
| 6 | sum={"value"}, |
| 7 | mean={"value"}, |
| 8 | noPrefix=true, |
| 9 | charSeparatorChar="_", |
| 10 | casOut={name="wide_data_custom", replace=true}; |
| 11 | RUN; |