Trucos SAS. Pasar de caracter a numérico y viceversa

3 Jun

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

7 respuestas a «Trucos SAS. Pasar de caracter a numérico y viceversa»

  1. 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 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)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *