Este script ilustra un problema común: la modificación de la longitud de una variable a menudo cambia su posición en la tabla (aparece al final). La solución propuesta utiliza los metadatos (SASHELP.VCOLUMN) para capturar el orden inicial de las variables y luego utiliza la instrucción RETAIN en un DATA step combinada con una instrucción LENGTH para aplicar el cambio de formato mientras se fuerza el orden de las columnas definido por la macro-variable.
Análisis de datos
Type : SASHELP
Utiliza la tabla de ejemplo 'sashelp.cars' como fuente de datos y 'sashelp.vcolumn' para los metadatos de estructura.
1 Bloque de código
DATA STEP Data
Explicación : Creación de una tabla de trabajo 'cars' (en la biblioteca WORK) a partir de un subconjunto de columnas de 'sashelp.cars'.
¡Copiado!
data cars;
set sashelp.cars (keep=Make Model Type Origin Drivetrain);
run;
1
2
DATA cars;
3
SET sashelp.cars (keep=Make Model Type Origin Drivetrain);
4
RUN;
5
2 Bloque de código
PROC SQL
Explicación : Extracción de la lista de nombres de variables de la tabla 'cars' desde el diccionario de datos (VCOLUMN), almacenada en la macro-variable ':varlist' para mantener el orden actual.
¡Copiado!
proc sql noprint;
select name into :varlist separated by ' '
from sashelp.vcolumn
where upcase(libname) eq 'WORK' and upcase(memname) eq 'CARS';
quit;
1
PROC SQL noprint;
2
select name into :varlist separated BY' '
3
from sashelp.vcolumn
4
where upcase(LIBNAME) eq 'WORK' and upcase(memname) eq 'CARS';
5
QUIT;
3 Bloque de código
DATA STEP Data
Explicación : Reconstrucción de la tabla 'cars'. La instrucción RETAIN (utilizando la lista de variables recuperada previamente) fuerza el orden de las columnas. La instrucción LENGTH modifica el tamaño de la variable 'Type' de 8 a 10 caracteres.
¡Copiado!
data cars;
retain &varlist;
length Type $10;
set cars;
run;
1
DATA cars;
2
retain &varlist;
3
LENGTH Type $10;
4
SET cars;
5
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.
Información de copyright : Author(s) : Nicolas DUPONT, Date : 22/04/2017
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.