Llega un gran número de visitas a AyD buscando como transformar en SAS variables caracter a numéricas y viceversa. Pero estas visitas están muy poco tiempo y me he planteado que los mensajes que hay dedicados al uso de PUT e INPUT no son claros. Por este motivo planteo un truco SAS de transformación de variables muy corto y concreto. Como es habitual lo vemos con ejemplos:
Transformar de caracter a numérico:
data uno;
char="2009";
num1=char*1;
num2=input(char,best16.);
run;proc contents; quit;
Dos formas de hacerlo, multiplicando por 1 o bien con INPUT(variable,formato). Una transformación muy habitual, de caracter a fecha SAS:
data uno;
char="10/09/2009";
fecha=input(char,ddmmyy10.);
run;proc contents; quit;
Transformar de numérico a caracter:
data dos;
num=2009;
char=put(num,4.);
run;
proc contents; quit;Transformamos con PUT(variable,formato). Creo que he dejado clara la metodología de todos modos si tenéis alguna duda o sugerencia... rvaquerizo@analisisydecision.es
gracias
Para pasar de numérico a caracter la función CAT es una opción: CAT(variable)
Tengo una base en excel con varias columnas con fechas en formato texto debería estar en formato fecha pero no lo está (mmddyy) cuando importo los datos desde Sas tengo que cambiar a formato fecha manualmente desde las opciones de importación (fecha, MMDDYYw.d), la cuestión es que son 15 columnas y no quiero hacer esto cada vez que abro estas bases, ¿que codigo puedo usar con la base ya cargada en Sas para automatizar el proceso? Pd. soy nuevo en Sas
Hola, necesito pasar una variable de carácter alfa numérica a carácter numérico, como hago para hacerlo en el SAS studio?
No he usado SAS Studio pero imagino que podrás poner código y en ese caso usar put e input
Hola Mariana, si tenes el campo Importe y el mismo esta como alfanumérico, lo podes pasar de la siguiente manera
data Lib.tablax;
set Lib.tablax;
importe_Num= importe*1;
new_num=input(importe,best4.);
run;
el resultado es el siguiente:
Importe: 218.63 (alfanumérico)
Importe_Num: 218.63 (numérico 8)
new_num= 218 (numérico 8)
El best4. toma los primeros 4 dígitos.
new_num=input(importe,best8.); */toma los primeros 8 dígitos