Transposición de Datos José Luis López Escalera, Iusacell

Anuncio
Transposición de Datos
José Luis López Escalera, Iusacell
Resumen
Por medio de este poster conoceremos las diferentes
técnicas para poder transponer información de filas a
columnas
PROC SQL
Proc transpose data=VENTAS
out= TRANS_V(drop= _NAME_ )
Prefix =IMP_VENTAS_;
var IMP_VENTAS
id PERIODO;
by ID_DEP;
run;
Lo que hacemos es
de acuerdo al periodo
seleccionamos los registros que coincidan con este
periodo usamos el campo del que deseamos un
registro único (ID_DEP) y operamos con los campos
que vamos a transponer.
Cuando los datos de algún periodo en particular no
existen esta transposición arroja datos nulos depende
de las necesidades si el dato se queda así o quizás se
puede llenar con ceros en el mismo proceso(como en
el ejemplo)
PROC SORT DATA= TRANS_VENTAS;BY
ID_DEP;RUN;
Introducción
La transposición de datos es una técnica usada ya sea
para presentar información de alguna forma mas
digerible o para poder poner un solo registro
información de un cierto numero de periodos
Existen básicamente tres formas diferentes de
transponer datos
•
•
•
Con el Proc Transponse (procedimiento diseñado
por SAS para poder efectuar esta operación)
Con un Paso Data
Con un Proc SQL
Proc transpose data=VENTAS
out= TRANS_G(drop= _NAME_ )
Prefix =IMP_GASTOS_;
var IMP_GASTOS
id PERIODO;
by ID_DEP;
run;
El procedimiento TRANSPOSE crea un conjunto de
datos de salida establecidos por la reestructuración de
los valores de un conjunto de datos SAS, la
transposición de las variables seleccionadas en las
observaciones. El procedimiento TRANSPOSE a
menudo puede eliminar la necesidad de escribir
demasiado código.
Cuando los datos de algún periodo en particular no
existen esta transposición arroja datos nulos depende
de las necesidades si el dato se queda así o quizás se
puede llenar con ceros con un proceso posterior
Ventajas:
• No se puede conocer el periodo que se va a
transponer esto facilita la escritura de código
•
Se puede realizar una transposición columnas a
filas ó filas a columnas
•
Desventajas:
• Se debe de conocer el numero de periodos que se
van a transponer
DATA TRANS_VENTAS;
MERGE TRANS_V
TRANS_G;
BY ID_DEP;
RUN;
•
Se debe de escribir mucho código para lograr este
proceso.
PROC SQL;
CREATE TABLE TRANS_VENTAS AS
SELECT ID_DEP,
CASE WHEN (PERIODO= 1) then IMP_VENTAS
IMP_VENTAS_P1,
CASE WHEN (PERIODO= 1) then IMP_GASTOS
IMP_ GASTOS _P1,
CASE WHEN (PERIODO= 2) then IMP_VENTAS
IMP_VENTAS_P2,
CASE WHEN (PERIODO= 2) then IMP_GASTOS
IMP_ GASTOS _P2,
CASE WHEN (PERIODO=3) then IMP_VENTAS
iMP_VENTAS_P3,
CASE WHEN (PERIODO=3) then IMP_GASTOS
IMP_ GASTOS _P3
FROM VENTAS
GROUP BY ID_DEP
QUIT;
Paso Data (Merge con la misma tabla)
Cuando los datos de algún periodo en particular no
existen esta transposición arroja datos nulos depende
de las necesidades si el dato se queda así o quizás se
puede llenar con ceros con un proceso posterior
ELSE 0 END AS
ELSE 0 END AS
ELSE 0 END AS
ELSE 0 END AS
ELSE 0 END AS
ELSE 0 END AS
Referencias
•
http://analisisydecision.es/truco-sas-transponer-tablas-conproc-transpose-data-o-proc-sql/
•
http://sct.uab.cat/estadistica/sites/sct.uab.cat.estadistica/files/
ManualSAS.PDF
•
http://support.sas.com/documentation/cdl/en/proc/61895/HT
ML/default/viewer.htm#transpose-overview.htm
Ventajas:
•
Se pueden transponer el número de variables que
sea en el mismo paso Data
•
http://analisisydecision.es/trucos-sas-trasponer-con-sql-paratorpes/
•
Es el método más rápido de los tres siempre y
cuando la tabla esta ordenada
•
http://www.webmining.cl/2011/06/10-funciones-potentespara-proc-sql/
.
Desventajas:
•
Se debe de conocer el numero de periodos que se
van a transponer
•
La tabla debe de estar ordenado por el id esto
puede ser muy lento si la tablas es muy grande ya
que previamente hay que ejecutar un Proc Sort por
el id
Se debe de escribir mucho código para lograr este
proceso.
Desventajas:
• Solo se puede transponer una variable a la vez lo
cual hace muy lento el proceso en tablas muy
grandes cuando se quiere transponer mas de una
variable ya que se tiene que efectuar las
transposición de una variable y posteriormente de
las demás , realizar ordenamiento de cada Dataset
y realizar un merge entre todas.
•
No se pueden realizar cálculos como sumas , para
eso seria mas eficiente realizarlo de otra forma
•
VENTAS(RENAME=( IMP_VENTAS =IMP_VENTAS_2
IMP_GASTOS=IMP_GASTOS_2)
where=(PERIODO=2))
VENTAS(RENAME=( IMP_VENTAS =IMP_VENTAS_3
IMP_GASTOS=IMP_GASTOS_3)
where=(PERIODO=3)) ;
BY ID_DEP;
RUN;
Estructura Básica:
En prefix indicamos el prefijo que deseamos para la
nueva variable. En el dataset de salida eliminamos la
variable nombre que genera SAS por default.
Evidentemente transponemos por el id_dep y en la
instrucción ID ponemos el campo que identifica
las columnas(en nuestro caso periodo.
Se puede sumar, promediar, calcular desviación
estándar, valor máximo y mínimo
PROC SORT DATA= TRANS_GASTOS;BY
ID_DEP;RUN;
•
Este es el proceso más lento de los tres consume
muchos recursos
El Paso Data es el más eficiente, el PROC SQL
tarda un 75% más y el TRANSPOSE un 250%
más.
Por otro lado el TRANSPOSE podría ser mejor
en códigos automáticos ya que no necesitamos
parámetros, pero si trabajamos con macros al
final el paso DATA es más efectivo
Ventajas:
• Se pueden transponer el número de variables que
sea
Esta forma de transponer es la unión horizontal de una
tabla consigo misma tantas veces como periodos
disponemos por id_dep. Necesitamos renombrar la
variable para no quedarnos con sólo una columna esto
con el fin de obtener varias columnas
PROC TRANPOSE
Conclusiones
Información de Contacto
José Luis López Escalera
Iusacell
[email protected]
www.iusacell.com.mx
DATA TRANS_VENTAS(drop=(IMP_VENTAS
IMP_GASTOS PERIODO) ) ;
MERGE VENTAS(RENAME=( IMP_VENTAS =IMP_VENTAS_1
IMP_GASTOS=IMP_GASTOS_1)
where=(PERIODO=1))
ID_DEP
1
2
3
4
1
2
3
4
1
2
3
4
IMP_VENTAS
$
15.00
$
75.00
$ 180.00
$
45.00
$
7.00
$
60.00
$ 200.00
$
19.00
$
47.00
$
60.00
$ 115.00
$
69.00
IMP_GASTOS PERIODO
$
7.00
1
$
50.00
1
$ 100.00
1
$
28.00
1
$
4.00
2
$
40.00
2
$ 115.00
2
$
8.00
2
$
30.00
3
$
40.00
3
$
85.00
3
$
45.00
3
VENTAS
ID_DEP
1
2
3
4
IMP_VENTAS_1 IMP_GASTOS_1 IMP_VENTAS_2 IMP_GASTOS_2 IMP_VENTAS_3 IMP_GASTOS_4
$
15.00 $
7.00 $
7.00 $
4.00 $
47.00 $
30.00
$
75.00 $
50.00 $
60.00 $
40.00 $
60.00 $
40.00
$
180.00 $
100.00 $
200.00 $
115.00 $
115.00 $
85.00
$
45.00 $
28.00 $
19.00 $
8.00 $
69.00 $
45.00
TRANS_VENTAS
Descargar