Pasar números a carácter en SAS es un tema reiterativo tanto en entradas al blog como en búsquedas. Pero que se le puede dar otra vuelta de tuerca. Se trata de transformar fechas a variables alfanuméricas, pero en este caso vamos a poner las fechas en formato español. Ejecutad este ejemplo en SAS:
data uno;
y = '30jan11'd;
c0 = put(y,ddmmyy10.);
c1 = upcase(put(y,ESPDFDD.));
c2 = upcase(put(y,ESPDFDE.));
c3 = upcase(put(y,ESPDFDN.));
c4 = upcase(put(y,ESPDFDT.));
c5 = upcase(put(y,ESPDFDWN.));
c6 = upcase(put(y,ESPDFMN.));
c7 = upcase(put(y,ESPDFMY.));
c8 = upcase(put(y,ESPDFWDX.));
c9 = upcase(put(y,ESPDFWKX.));
run;
Imagino que todos tenéis el NLS de SAS instalado y no tenéis problemas con estos formatos. Resumamos que nos ofrece cada una de estas transformaciones:
- DDMMYY10 es el más habitual y nos genera 30/01/2011 podemos jugar con la longitud
- ESPDFDD genera 30.01.2011 un formato que personalmente utilizo mucho
- ESPDFDE genera 30ENE2011 probablemente el más habitual
- ESPDFDN genera un 7, la semana del año
- ESPDFDT genera un fecha-hora con formato español, en este caso no tiene mucho sentido
- ESPDFDWN nos pone el día de la semana, domingo
- ESPDFMN nos pone el mes, enero
- ESPDFMY genera ENE11, práctico para sumarizaciones
- ESPDFWDX genera 30 DE ENERO DE 2011
- ESPDFWKX genera DOMINGO, 30 DE ENERO DE 2011 un formato que no he usado nunca
Estos formatos SAS los conozco gracias a un lector del blog. Al César lo que es del César. Aquí aprendemos todos. Es interesante recogerlos todos juntos para que esta entrada quede como una referencia de la transformación de fechas en textos en SAS. Saludos.
Hola,
cómo sería para pasar de variable numerica a caracter (string) lo digo porque habitualmente tu aplicas un proc format, pero luego la variable sigue siendo numerica, y por ejemplo si defines intervalos, éso ya no lo puedes cambiar. Sabéis algun truco? Gracias! Alicia
Utiliza put(varible,formato). Saludos.
hola que tal, me podrían ayudar con lo siguiente?
tengo una variable alfanumérica x=200105
y quiero convertirla a c=may01 (en español)
hice esto pero no sale
c=put(x,ESPDFMY.);
ojalá pueda ayudarme!nn1
Hola, tienes que transformarlo a fecha primero:
data _null_;
x=200501;
c = put(mdy(mod(x,100),1,int(x/100)),ESPDFMY.);
put c=;
run;
Saludos.
Hola,
Tengo una variable llamada hora_llamada con formato alfanumérico $8. con valores como este, por ejemplo: 10.26.08
¿Cómo puedo pasar este valor a formato hora time8.?
Gracias, de antemano
Hola, tienes la función HMS( hour, minute, second )
Yo aprovechando obtuve con código
«Este reporte se encuentra actualizado al día 12jul2021»
ES que tú tienes un colaborador top