En esta nueva entrega del monografico de fechas SAS vamos a estudiar algunos formatos. Un formato es la forma en la que vemos una variable. 17327 es un valor sin significado, pero el 20 de junio de 2007 es una fecha. En la anterior entrega estudiamos como SAS guardaba las fechas como variables numéricas, como el número de días transcurridos desde el 1 de enero de 1960. Las fechas/horas se guardaban como el número de segundos transcurridos. Con los distintos formatos fecha/hora nosotros podremos visualizar estas variables numéricas de SAS. Por ejemplo:


data borrar;
x=1; y=1; z=1; m=1;
format x date9. y ddmmyy10. z datetime20. m time10.;
proc print noobs; run;

 x          y             z                m

02JAN1960 02/01/1960 01JAN1960:00:00:01 0:00:01

Vemos como internamente el valor 1 toma por un lado el 02/01/1960 para fechas y 1 segundo del 01/01/1960 para fechas/hora y 1 segundo para variables numéricas tipo hora. Disponemos de la ayuda de SAS para conocer todos los formatos, en este capítulo del monográfico se trabajará con algunos ejemplos de los formatos fecha más habituales, los formatos fecha/hora se representan habitualmente como datetimeN. y timeN. y no es normal emplear otros; por ello nos centraremos en las fechas. Veamos algunos ejemplos que recogen los formatos de fecha más utilizados en SAS:


data borrar;
x="01JAN2008"d;
y=x+10;
z=y+100;
m=z-12;
format x ddmmyy8. y ddmmyy10. z yymmddn8. m date7.;
proc print noobs; run;

 x        y          z        m

01/01/08 11/01/2008 20080420 08APR08

El formato ddmmyyN. es “la estrella”, los formatos dateN. no son tan usados si trabajamos con el idioma español pero puede ser interesante trabajar con él si deseamos calcular fechas de referencia que puedan ser parámetros macro. En este ejemplo también vemos el YYMMDDN8 usado como numérico en muchas BBDD. En función de la longitud podemos modificar estos formatos, pero hay que tener cuidado con poner una longitud no valida como por ejemplo ddmmyy11. esto nos llevaría a tener un error. Como ya se ha comentado en la ayuda de SAS tenemos todos los formatos disponibles y debe ser nuestro material de consulta imprescindible. Otros ejemplos interesantes son:


data borrar;
x="01JAN2008"d;
y=x+10;
z=y+100;
m=z-12;
format x julian7. y EURDFDD10. z yymmn6. m worddate20.;
proc print noobs; run;

 x         y        z       m

2008001 11.01.2008 200804 April 8, 2008

Los formatos julianos son habituales en máquinas antiguas. El formato DD.MM.YYYY también es habitual y, particularmente, yo lo empleo bastante. El YYYYMM puede sernos muy útil cuando queramos trabajar con meses y por último el WORDDATEN. que junto con el idioma español no queda muy “elegante”.

A través de los formatos podremos “transformar” nuestras variables fecha en otras variables SAS, para ello podemos emplear la función PUT. PUT transforma una variable numérica a caracter, veamos un par de ejemplos de uso:


data _null_;
x="01JAN2008"d;
y=x-12;
referencia=quote(put(y,date7.))||"d";
put referencia;
z=x+19;
mes=put(z,yymmn6.)*1;
put mes;
run;

La variable referencia de nuestro paso data será la cadena alfanumérica “20DEC07″d y mes será numérica de valor 200801, dos formas muy prácticas en SAS de representar fechas. Por otro lado hay ocasiones en las que valores numéricos o caracter han de pasar a ser valores fecha, por ejemplo:


data _null_;
y=20080501;
z=20070501;
x=y-z; put x=;
run;

Es evidente que trabajamos con 2 fechas y el resultado de esa diferencia no puede ser 10000. Luego necesitamos transformar una variable numérica en una variable fecha:


data _null_;
y=20080501;
z=20070501;
y1=input(compress(put(mod(y,100),z2.)||put(mod(int(y/100),100),z2.)||int(y/10000)),ddmmyy8.);
z1=input(compress(put(mod(z,100),z2.)||put(mod(int(z/100),100),z2.)||int(z/10000)),ddmmyy8.);
x=y1-z1; put x=;
run;

¡Da miedo la transformación de variables! Se ha empleado la función INPUT que transforma variables alfanuméricas en variables numéricas. Pero no hay que asustarse (mucho) con la transformación de variables numéricas a fecha ya que en la siguiente entrega trabajaremos con funciones que nos facilitan mucho esta labor. Aun así es importante conocer la metodología para pasar de numéricas a fecha.  Tanto la función PUT como INPUT tendrán un monográfico sobre su uso, sirvan estos casos a modo de introducción.

Como siempre para cualquier duda o sugerencia… rvaquerizo@analisisydecision.es

76 pensiamientos en “Trabajo con fechas SAS. Formatos de fecha SAS más utilizados

  • Victor

    Hola, tengo un campo tipo alfanumerico con la fecha escrita de esta manera: yyyy-mm-dd, y me gustaria cambiar el formato de la variable a numerico con la fecha escrita igual sin guiones.
    He probado a poner el codigo como el vuestro pero supongo que no funciona xq tengo la version 4.1 de sas que es un poco antigua.
    Si me hecharan una mano se lo agradeceria.
    Saludos

    Responder
  • rvaquerizo

    Victor, emplea estas funciones:

    data _null_;
    y=”2009-02-11″;
    fecha=mdy(substr(y,6,2)*1,substr(y,9,2)*1,substr(y,1,4)*1);
    put borra fecha=yymmdd10.;
    run;

    El formato fecha aaaa-mm-dd es el yymmdd10. Me parece extraño que no te funcione:

    data _null_;
    y=”2009-02-11″;
    fecha2=input(y,yymmdd10.);
    put fecha2=yymmdd10.;
    run;

    Responder
  • ffernandez

    Yo lo que he entendido que quiere hacer es algo como esto:

    data uno;
    y=”2009-02-11″;
    fecha=(substr(y,1,4)||substr(y,6,2)||substr(y,9,2))*1;
    run;

    Lo que no se muy bien es para qué. Salvo utilizarla como parte de una clave o algo así.

    Responder
  • Victor

    Al final lo consegui de esta manera:

    data creuar (drop=ID_FCH_MORA);
    set creuar;
    any=SUBSTR(ID_FCH_MORA,1,4); mes=SUBSTR(ID_FCH_MORA,6,2); dia=SUBSTR(ID_FCH_MORA,9,2);
    ID_FCH_MORA_2=10000*any+100*mes+dia;
    run;
    data creuar (drop=ID_FCH_MORA_2);
    set creuar;
    ID_FCH_MORA=ID_FCH_MORA_2;
    run;

    Gracias chicos, no pensaba q contestasen tan rapido. Buena página por cierto.

    Responder
  • ffernandez

    Es equivalente, aunque un poco más rebuscado. Pero me sigue provocando curiosidad para qué la quieres en ese formato…

    Responder
  • rvaquerizo

    Por cierto para eliminar caracteres compress viene muy bien:

    data uno;
    y=”2009-02-11″;
    fecha=compress(y,”-“)*1;
    run;

    Responder
  • ffernandez

    Pues sí… queda demostrado que en SAS hay como mínimo 10 formas distintas de hacer cada cosa. No se hasta que punto esto es algo bueno o malo…

    Responder
  • Victor

    Me gusta tener las fechas en formato numerico ya que soy matematico, eso de los caracteres me pone un poco nervioso, jejejeje

    Responder
  • ffernandez

    Si, si, si eso lo entendemos, yo soy estadístico y los que escribimos por aquí otro tanto. Pero para eso SAS tiene un formato de fecha numérico mucho más útil que el 20090101, sobre el que puedes utilizar diferentes funciones para obtener diferencias entre fechas, y muchas otras cosas, por eso me extraña que no quieras utilizar ese formato y sí el yyyymmdd numérico.

    Responder
  • Victor

    Trabajo con este tipo de fecha porque ya la primera con la que trabaje ya me venia asi, soy nuevo en esto. Qual es el formato numérico para las fechas con el que se puede usar funciones?

    Responder
  • Victor

    Ah, bien te refieres a los formatos 02JAN1960 02/01/1960 01JAN1960:00:00:01 0:00:01
    que se suponen numéricos. Ya te digo, yo veo mas fácil hacer la parte entera de 20090101/1000 para sacar el año. Supongo que con el tiempo me habituare a ellos. Saludos

    Responder
  • ffernandez

    SAS proporciona un formato de fechas que es muy útil para realizar ciertas operaciones. El formato es una representación que consiste en el número de días de diferencia respecto de una fecha base, que por defecto creo que es el 1 de enero de 1960 (se puede cambiar). Sobre este formato se pueden utilizar muchas funciones de SAS que permiten extraer la parte que nos interesa y realizar operaciones de diferencia de fechas, y bastantes cosas mas (month(), day(), year(),weekday(), intck()…). La lista de funciones y operaciones que puedes hacer es enorme. Creo que Raúl tiene más de un artículo en este mismo blog explicando el uso básico de las fechas SAS. Te recomiendo que hagas una búsqueda por el google al respecto, ya que una vez que te familiarizas con ellas son de muchísima utilidad.

    Responder
  • Luis Diego

    Hola, mi caso es el siguiente:
    Estoy haciendo un trabajo con visual basic 6.0, toma un archivo plano que viene con fechas y las mismas requiero convertirlas un valor numerico (serial date), para luego ingresarlo en un AS400, alguien me puede indicar como convertir de normal date to serial date.

    Gracias.

    Responder
  • jmls

    Hola,

    necesitaría crear una macrovariable fecha con formato 20110720 a partir de otra con formato ’20jul2011’d, o a la inversa.

    Estoy atascado, ¿podéis echarme un cable?

    Responder
  • ffernandez

    siendo vieja=”20jul2011″d y nueva la que queremos, algo asi como:
    nueva=year(vieja)||put(month(vieja,z2.)||put(day(vieja,z2.); Debería darte la primera, al revés seria algo así como:
    vieja=put(mdy(substr(nueva,5,2),substr(nueva,7,2),substr(nueva,1,4)),formadoadecuado.), formatoadecuado tendrías que buscarlo en la ayuda de sas, y así de memoria tampoco estoy seguro de si es un put o un input lo que hace falta… ¿Soy el único que sigue dudando después de años? :P

    Responder
  • rvaquerizo

    No tengo SAS ni WPS porque no me envían la licencia:

    data _null_;
    vieja=20JUL2011’d;
    nueva=(year(vieja)*10000+month(vieja))+day(vieja);
    run;

    Al contrario:

    http://analisisydecision.es/macros-sas-transformar-un-numerico-a-fecha/

    %macro numfecha(num);
    mdy(mod(int(&num./100),100),mod(&num.,100),int(&num./10000))
    %mend;

    data _null_;
    vieja=20110720;
    aux1=%numfecha(vieja);
    nueva=put(aux1,ddmmyy10.);
    run;

    Responder
  • José Antonio Gil Martín

    De vieja a nueva:
    %let vieja=”20jul2011″d;
    %let nueva=%sysfunc(putn(&vieja, yymmddn8.));

    De nueva a vieja:
    %let nueva=20110720;
    %let vieja=”%sysfunc(putn(%sysfunc(inputn(&nueva, yymmdd8.)), date9.))”d;

    Responder
  • ffernandez

    Creo que gana Jose Antonio, no se manipula nada en ningún caso, solo se cambia de formato, me apunto el putn e inputn. pensaba que inputn aplicaba sobre la representación interna de la fecha (número de días desde 1960…) y no sobre un número tipo 20110720.

    Responder
  • diana

    Tengo un programa SAS con uma macro, dentro del programa le paso parametros a la macro, pero cuando ejecuto el programa desde visual basic 6 no se como pasarle los parametros al programa para q los tome la macro, alguna sugerencia??
    GRACIAS!

    Responder
  • rvaquerizo

    Se me ocurre que la macro de VB genere el código SAS que vas a ejecutar y luego lo guarde como un archivo que puedas ejecutar desde SAS. También puedes mandar los parámetros a un fichero de texto para leerlos desde SAS.

    Responder
  • andres

    Hola, tengo un problema, como puedo traspasar el formato de mes (“01JAN2009″d) a español (01ene2009)?.

    Responder
  • rvaquerizo

    Hola andres. No te queda más remedio que hacerlo a mano, algo así:

    if month(fecha)=1 then fecha_esp = put(day(fecha,z2.)||”ENE”||put(year(fecha,4.);

    Saludos.

    Responder
  • ffernandez

    También puedes utilizar la sentencia que te ha puesto Raúl para definir tu propio formato. Supongo que una búsqued en google de “SAS create your own formats” te ayudará.

    Responder
  • José Antonio Gil Martín

    Buenas, también se puede usar lo siguiente:

    fecha=put(’01jan2009’d, eurdfde9.);

    esto crea una variable caracter de longitud 9 con el valor 01ene2009. El formato EURDFDE9. escribe el nombre del mes en español si la opción del sistema dflang= es el español, es decir:

    options dflang=spanish;

    Si no es así puedes usar el formato ESPDFDE9.
    Otros formatos que podrías usar son:

    FRADFDE9. –> nombre del mes en francés
    CATDFDE9. –> nombre del mes en catalán.

    Saludos

    Responder
  • ffernandez

    No tenía ni idea de que existía eso del SAS NLS, la próxima sobre fechas me espero a la respuesta de Jose Antonio…

    Responder
  • rvaquerizo

    No tenía ni idea de la existencia de esos formatos. Muy práctico. Gracias.

    Responder
  • Jose Luis

    Que tal chicos, un favor, tengo uno de los problemas que se menciona arriba el de la diferencia de 10000, pero no logro aterrizar la idea.
    mi primer campo se llama fec_ini y es del tipo: 20120301
    mi segundo campo se llama fec_fin: 20120501
    no logro estraer la diferencia que seria: fec_fin-fec_ini = 3 meses

    Responder
  • José Antonio Gil Martín

    José Luis puedes probar con esto:

    data _null_;
    fec_ini=’20120301′;
    fec_fin=’20120501′;
    fec_i=input(‘20120301’, yymmdd10.);
    fec_f=input(‘20120501’, yymmdd10.);
    intervalo_meses=intck(‘moth’,fec_i, fec_f);
    intervalo_dias=intck(‘day’,fec_i, fec_f);
    put intervalo_meses intervalo_dias;
    run;

    Saludos

    Responder
  • rvaquerizo

    Una pregunta Jose Luis, esa diferencia que planteas no sería 2 meses 20120501 – 20120301 -> 2 meses ¿?

    Puedes leer:

    http://analisisydecision.es/monografico-funciones-intnx-e-intck-para-fechas-en-sas/

    http://analisisydecision.es/macros-sas-transformar-un-numerico-a-fecha/

    Y hacer:

    data uno;
    y=20120301;
    x=20120501;

    dif= intck(“month”,%numfecha(y),%numfecha(x));
    run;

    Saludos.

    Responder
  • Jose Luis

    Muchas gracias JoséAntonio, quedo perfecto.un abrazo.

    Responder
  • Jose Luis

    Excelente, quedo perfecto. Saludos

    Responder
  • Jose Luis

    Muchas Gracias rvaquerizo, ya quedo listo, saludos

    Responder
  • Fernando

    Estoy buscando el similar a
    SIFECHA(f.inicio,f.fin,’YM’)
    Que me regresa los meses que han pasado despues de los añs cumplidos.
    Alguien sabe si existe una formula similar para SAS?!

    Responder
  • Daniela

    hola a todos.. necesito ayuda reurgente..en este momento me encuentro realizando un experiemento exactamente un bioensayo q consiste en una dosis y respuesta por parte de los individuos necesito calcular la dosis letal media pero llevo dias buscando el lenguaje de programacion para este tipo de ensayo. debo utilizar probit … gracias

    Responder
  • rvaquerizo

    Hola Daniela, es una pregunta muy genérica esa que planteas. Pero en cuanto a software te recomiendo que utilices R. Tienes una gran cantidad de documentación y una lista de usuarios que podrá ayudarte.

    Un saludo.

    Responder
  • Emazcona

    Hola rvaquerizo. Somos usuarios principiantes de Sas y estamos tratando de planificar proyectos a pesar de seguir todas las instrucciones de la ayuda no censseguimos que se ejecute un proycto muy sencillo (consulta y exporar a excel).

    Hemos probado de todo con el sas aierto, cerrado, etc. ¿que podemos estar olvidando?

    Responder
  • rvaquerizo

    Hola. ¿Me puedes decir la versión de SAS con la que trabajas? ¿Utilizas Enterprise Guide? Saludos.

    Responder
  • Emazcona

    Si. Efectivamente Enterprise Guide 4

    Responder
  • rvaquerizo

    ¿No puedes abrir directamente el Excel en el proyecto de Guide?

    Intenta hacer un paso para importar datos de Excel a tabla SAS.

    Seguramente no tengas el módulo específico para importar ficheros de MS Office. Con Guide no es habitual.

    Responder
  • Emazcona

    Si puedo. Lo hago habitualmente. El problema es que planificamos y no pasa nada. Ni ejecuta la consulta ni nada.

    Responder
  • rvaquerizo

    Tienes la apertura del fichero como un paso de tu proyecto o bien tienes una importación a tabla SAS ¿?

    Responder
  • Adrés Ram

    Hola, necesito una función para comparar fechas algo como: si Fecha_inicio (en formato MM/DD/AAAA)> 01/015/2013 …
    Les agradezco mucho

    Responder
  • alfredo pacheco

    buenas tengo una base de dato con la fecha de nacimiento quisiera calcular la edad que tienen las personas actualmente utilizo el SAS Enterprise Guide, si pudieran ayudarme a como calcular la edad a la fecha

    Responder
  • Emr

    Hola,
    Me gustaría saber cómo puedo cambiar el formato de fechas.
    Por ejemplo, tengo la fecha y formato
    end_date=’26NOV12:23:59:59’DT
    y me gustaría pasarla al formato:
    ’26NOV2012′
    ¿Cómo puedo hacerlo?
    Gracias,

    Responder
  • rvaquerizo

    Hola,

    Para separar de una variable con formato fecha hora en SAS la fecha se emplea la función DATEPART. Esta función sólo se quedará con la fecha de tu DT.

    Saludos.

    Responder
  • Ramiro Nieto

    Datepart(end_date) as Fecha format date7.

    La variable que contiene la fecha con hora es end_date cambiala por el nombre de la varible que contiene tu fecha y as Fecha significa como lo vas a denominar ahora puede ser el mismo nombre inicial puede ser date7. o date9. cambia al final el año de 2 o 4 digitos

    Responder
  • Ramiro Nieto

    Datepart(end_date) as Fecha format date7.

    La variable que contiene la fecha con hora es end_date cambiala por el nombre de la varible que contiene tu fecha y as Fecha significa como lo vas a denominar ahora, puede ser el mismo nombre inicial; el formato puede ser date7. o date9.; la diferencia es que al final de la fecha el año de 2 (yy) o 4 digitos (yyyy)

    Responder
  • David Salazar

    Hola me gustaria saber como puedo sacar el minimo y el maximo (en dias) entre dos variables fecha con formato ddmmyy10.

    Responder
  • rvaquerizo

    Con min o max, las fechas en SAS son el número de días desde el 1 de enero de 1960. Son un número por lo que puedes emplear funciones numéricas.

    Responder
  • David Salazar

    Siendo un poco mas explicito lo que necesito es MIN(vig_hasta,final), es decir, el minimo entre estas dos variables fecha con formato ddmmyy10.

    Responder
  • Carla

    Buenos días… Alguien puede ayudarme con esto: tengo las fechas con el siguiente formato 01/01/2014 y necesito cambiarlo a 01-01-2014. Como puedo hacerlo? lo necesito para entregar un reporte donde me piden el formato con separación de guiones. Gracias!!

    Responder
  • rvaquerizo

    Hola Carla, lee esto:

    https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000590669.htm

    En concreto te interesa ddmmyydx.

    Saludos.

    Responder
  • ANDREINA

    hola, tengo una fecha en formato ’01APR2014:00:00:00’dt, como puedo hacer para restar 1 dia

    Responder
  • Edgar Salazar

    Hola me gustaría saber como podría tomar la fecha de la máquina pues necesito generar un reporte diario y lo tengo automatizado salvo por la fecha que la debe cambiar a diario

    Responder
  • rvaquerizo

    Edgar, la función today()

    data _null_;
    y=today();
    put y ddmmyy10.;
    run;

    Responder
  • Ana

    Hola!
    El campo en el archivo originar tiene el siguiente formato ” 5/24/2014 12:00 AM” y cuando se importa a SAS tiene la misma apariencia pero en formato alfanumerico. Yo necesito transformarlo a formato fecha, porque luego necesito extrer en un campo la fecha, en otro la hora y en otro los minutos.
    Estoy usando lo siguiente: put(date_log,MDYAMPM25.);run;
    pero no funciona, y me parece que es porque no encuentro el formato correcto.
    Podrian ayudarme por favor?

    Responder
  • Patricio

    Estimados por favor su ayuda necesito realizar la resta de 2 fechas pero el resultado debe tomarme en cuenta solo los dias laborables, existe alguna función en SAS que me permita realizar esta acción. Gracias por su ayuda.

    Responder
  • omar

    Hola me pueden ayudar, requiero sacar reportes con un usuario que se conectan a la DB de Oracle, pero necesito que la clave este oculta o encriptada cuando la coloque en el editor de SAS:

    %let USUARIO =’usuario’;
    %let CLAVE =’password’;

    Responder
  • Julio

    Buenas tardes. Agradecería su ayuda con este problema.
    En una base tengo entre otros, los campos:
    -NSS (formato numérico $8.)
    -FECHA (formato date9.)
    -HORA (formato time8.)
    La base se encuentra ordenada de forma ascendente por el campo NSS y FECHA.

    Busco que si (NSS renglón N = NSS renglón N+1) Y (FECHA renglón N = FECHA renglón N+1) ENTONCES me de la diferencia entre la hora del renglón N y el renglón N+1.

    Gracias por su atención.

    Responder
  • María

    Hola, tengo una variable fecha_nacimiento almacenada en texto de la siguiente manera ’15/07/2001′ por ejemplo; me gustaría transformarla a un formato fecha de SAS ddmmyy10. pero no soy capaz, si alguien puede ayudarme…

    Gracias!

    Responder
  • Monica

    Hola, estoy empezando a usar SAS y quiero extraer de la fecha únicamente el mes en otra columna, pero no se como tengo que realizar el codigo.
    Tengo la tabla con varias columnas y el formato de fecha es este: 25MAY15:11:25:16

    Podrían ayudarme, por favor.

    Responder
  • rvaquerizo

    Hola, emplea la función MONTH pero previamente tienes que hacer DATEPART de esta forma:

    MONTH(DATEPART(fecha en formato fecha hora))

    Saludos.

    Responder
  • Carlos

    Buenas tardes, a ver si me podéis echar una mano.

    Tengo una versión de SAS (4.3) que al darle a enviar a Excel (2010) los campos de fecha el Excel me los lee con formato personalizado, por lo que debo cambiar manualmente dichas columnas a formato fecha para que figure correctamente, en formato personalizado saldría del estilo 01MARyyyy, no sale el año.

    He probado a cambiar el formato de la fecha en SAS desde date a ddmmyy pero no hay manera, solo consigo que salga correctamente cuando en lugar de usar el botón de enviar uso el de exportar a Excel 97-2003.

    Muchas gracias por vuestra ayuda!

    Responder
    • rvaquerizo

      Hola,

      Imagino que usas Enterprise Guide 4.3 y la exportación como un paso del proceso. Utiliza el proc export de SAS mejor que el asistente.

      Saludos.

      Responder
  • Mautomatico.uro

    Cada vez que genero un archivo le debo poner la fecha a mano, quisiera hacerlo a

    Responder
  • Mauro

    Cada vez que genero un archivo .csv, debo agregar la fecha a mano, quisiera hacerlo automatico.

    como lo puedo hacer?

    Responder
  • rvaquerizo

    Cuando lo generes emplea macro variables que las modificas al principio de tu programa SAS. Saludos.

    Responder
  • Ruben Dario Medina Rivera

    Saludos, tengo una variable medida en el tiempo y necesito acumular dicha variable por períodos. Por ejemplo, el acumulado de junio a mayo durante 20 años.

    Responder
    • Rvaquerizo

      Hola,

      Lo primero que tienes que hacer es definir que periodo quieres, mensual, semanal,… después vía proc sql o means podrás sumarizar datos. Suerte.

      Responder
  • Jairo

    necesito de un listado tomar la fecha mínima y fecha maxima en otro caso, con cual funcion de SAS podria manejarlo

    Responder
  • MARIA

    Estaba concatenando unas tablas, y el programa no me permitía ejecutar la tarea porque dos variables en las dos tablas que quiero concatenar tienen formato diferente. En una tabla aparece una numérica y la otra alfanumérica y en la otra al contrario. Quiero saber cómo puedo arreglar este problema, si se puede cambiar el formato de las variables?, cómo se hace esto?

    Responder
  • Marta

    Hola a todo el mundo y en especial M.Vaquerizo por todo lo que nos aportas.
    Tengo una duda que es una tonteria pero por mas que hago no lo soluciono, es tan tonto como cambiar el formato 20081201 a 01/12/2008 ; si pongo
    “format DTNA ddmmyy10.;” Me coge bien el mes y el dia pero el año lo pone a 1960.
    Lo he de modificar para 70.000 observaciones
    He visto que daís diferentes alternativas pero no se como hacerlo para tantas fechas de en un mismo archivo
    Muchas gracias;
    PD: Vaya cantidad de gente que maneja tan bien el SAS

    Responder
  • Marlon Garcia

    Quisiera saber si hay una forma de validar el tipo de formato de un campo y que si cumple con ese formato ejecute una instruccion. Por ejemplo quisiera saber si el campo fecha de un determinado registro esta en formato mmddyy10. , si es verdadero entonces ejecuta una determinada instrucción.

    Es posible ?

    Responder
  • camila

    Hola! necesito calcular la diferencia en minutos entre dos fechas. Tengo las variables FECHA1, FECHA2, HORA1 y HORA2 por separado, las variables fechas con formato DDMMYY (ejemplo 01ENE2017) y las variables hora en HH:MM:SS (ejemplo 12:03:00). Necesito juntar FECHA1 con HORA1 en una sola variable con formato datetime20. y lo mismo para FECHA2 y HORA2 para luego hacer la resta. Al crear la nueva variable me arroja todo con fecha 01JAN1960:17:54:16, las horas las va variando.

    Responder
  • javier romo

    EStoy importando a SAS Studio una base de excell 2007, xls, y mi variable mas importante que es numerica( 1 o 0) la lee con formato Date 9. y claro como fecha
    que puedo hacer para que lea lo que realmente es?

    Responder

Deja un comentario

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