Este script pedagógico ilustra dos técnicas fundamentales de manipulación de datos. Primero, transforma un conjunto de datos 'ancho' que contiene los pesos de los bebés en diferentes meses (columnas weight3, weight6, etc.) a un formato 'largo' (una fila por mes por bebé) utilizando arrays (ARRAY) y un bucle iterativo en un paso DATA. Segundo, muestra cómo volver al formato 'ancho' utilizando el procedimiento TRANSPOSE, detallando los pasos sucesivos para refinar el resultado (uso de BY, ID y PREFIX).
Análisis de datos
Type : CREACION_INTERNA
Los datos 'baby_weight' se generan estáticamente en el script a través de la instrucción DATALINES.
1 Bloque de código
DATA STEP Data
Explicación : Creación del conjunto de datos inicial 'baby_weight' que contiene los identificadores, el género y los pesos medidos a los 3, 6, 9 y 12 meses.
¡Copiado!
data baby_weight;
input id gender $ weight3 weight6 weight9 weight12;
datalines;
1001 F 9 13 16 17
1002 F 11 16 17 20
1003 M 17 20 23 24
1004 F 16 18 21 22
1005 M 11 15 16 18
1006 M 17 21 25 26
1007 M 16 17 19 21
1008 F 15 16 18 19
;
run;
1
DATA baby_weight;
2
INPUT id gender $ weight3 weight6 weight9 weight12;
3
DATALINES;
4
1001 F 9131617
5
1002 F 11161720
6
1003 M 17202324
7
1004 F 16182122
8
1005 M 11151618
9
1006 M 17212526
10
1007 M 16171921
11
1008 F 15161819
12
;
13
RUN;
2 Bloque de código
PROC PRINT
¡Copiado!
proc print data = baby_weight;
run;
1
PROC PRINTDATA = baby_weight;
2
RUN;
3 Bloque de código
DATA STEP Data
¡Copiado!
data baby_weight_long (keep = id gender month weight);
set baby_weight;
array months{4} (3 6 9 12);
array weights{4} weight3--weight12;
do i = 1 to 4;
month = months{i};
weight = weights{i};
output;
end;
run;
1
DATA baby_weight_long (keep = id gender month weight);
2
SET baby_weight;
3
array months{4} (36912);
4
array weights{4} weight3--weight12;
5
DO i = 1 to 4;
6
month = months{i};
7
weight = weights{i};
8
OUTPUT;
9
END;
10
RUN;
4 Bloque de código
PROC PRINT
¡Copiado!
proc print data = baby_weight_long;
run;
1
PROC PRINTDATA = baby_weight_long;
2
RUN;
5 Bloque de código
DATA STEP Data
¡Copiado!
data baby_weight_long1;
set baby_weight;
array weights{4} weight3--weight12;
do i = 1 to 4;
weight = weights{i};
end;
run;
1
DATA baby_weight_long1;
2
SET baby_weight;
3
array weights{4} weight3--weight12;
4
DO i = 1 to 4;
5
weight = weights{i};
6
END;
7
RUN;
6 Bloque de código
PROC PRINT
¡Copiado!
proc print data = baby_weight_long1;
run;
1
PROC PRINTDATA = baby_weight_long1;
2
RUN;
7 Bloque de código
PROC SORT Data
¡Copiado!
proc sort data = baby_weight_long;
by id month;
run;
1
2
PROC SORT
3
DATA = baby_weight_long;
4
BY id month;
5
RUN;
6
8 Bloque de código
PROC TRANSPOSE Data
¡Copiado!
proc transpose data = baby_weight_long
out = baby_weight_wide;
run;
1
2
PROC TRANSPOSE
3
DATA = baby_weight_long
4
out = baby_weight_wide;
5
RUN;
6
9 Bloque de código
PROC TRANSPOSE Data
¡Copiado!
proc transpose data = baby_weight_long
out = baby_weight_wide;
by id;
run;
1
PROC TRANSPOSEDATA = baby_weight_long
2
out = baby_weight_wide;
3
BY id;
4
RUN;
10 Bloque de código
PROC TRANSPOSE Data
¡Copiado!
proc transpose data = baby_weight_long
out = baby_weight_wide;
by id;
id month;
run;
1
PROC TRANSPOSEDATA = baby_weight_long
2
out = baby_weight_wide;
3
BY id;
4
id month;
5
RUN;
11 Bloque de código
PROC TRANSPOSE Data
¡Copiado!
proc transpose data = baby_weight_long
out = baby_weight_wide (drop = _NAME_)
prefix = weight;
by id;
id month;
run;
1
PROC TRANSPOSEDATA = baby_weight_long
2
out = baby_weight_wide (drop = _NAME_)
3
prefix = weight;
4
BY id;
5
id month;
6
RUN;
12 Bloque de código
PROC PRINT
¡Copiado!
proc print data = baby_weight_wide;
run;
1
PROC PRINTDATA = baby_weight_wide;
2
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.