Llega un gran número de visitas a AyD buscando cómo transformar en SAS variables carácter 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 carácter a numérico

data uno;
  char = "2009";
  num1 = char * 1;
  num2 = input(char, best16.);
run;

proc contents data=uno; 
run;

Dos formas de hacerlo: multiplicando por 1 o bien con INPUT(variable, formato).

De carácter a fecha

Una transformación muy habitual: de carácter a fecha SAS.

data uno;
  char = "10/09/2009";
  fecha = input(char, ddmmyy10.);
  format fecha ddmmyy10.;
run;

proc contents data=uno; 
run;

De numérico a carácter

data dos;
  num = 2009;
  char = put(num, 4.);
run;

proc contents data=dos; 
run;

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.