Bucle de fechas con SAS para tablas particionadas

Partimos de un mes inicial hasta un mes final es necesario crear una tabla SAS con dos variables, el inicio del mes y el final del mes. Trabajo con fechas en SAS que todos sabemos es una tarea un «poco ardua». El título de la entrada también es un poco peculiar pero es la respuesta a la duda que planteaba un lector: Cogemos dos fechas en formato `yyyymmaa` Ej: `20150101` a `2016131` Necesito una salida como la siguiente `20150101 20150131` `20150201 20150228` `20150301 20150331` `20150401 20150430` . `20161101 20161130` `20161201 20161231` Pero para que los datos pedidos en este periodo salgan en una tabla por mes con un `proc sql` ya diseñado que funciona pero sin particionarlo en una tabla por mes en el log Se me han ocurrido varias formas de hacerlo pero a continuación os planteo la siguiente. Como referencia hemos de irnos a una entrada anterior del blog, una entrada del 2008 cuando puse en marcha analisisydecision.es ...

20 de diciembre de 2016 · rvaquerizo

Trucos SAS. Pasar fecha a caracter en SAS

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: ...

11 de abril de 2012 · rvaquerizo

Trucos SAS. Número de días de un mes

Están entrando muchas visitas con las palabras «número de días de un mes en SAS». Y hoy vamos a dar respuesta a estas entradas con una macro y un truco de SAS. Si tenemos una fecha en formato AAAAMM numérica, típica de las particiones de Oracle, disponemos de la siguiente macro: %macro dias(mes); *VARIABLES AÑO Y MES; %let y=%sysfunc(int(&mes./100)); %let m=%sysfunc(mod(&mes.,100)); *TRATAMIENTO ESPECIAL PARA LOS DICIEMBRES; %if &m.=12 %then %do; %let m1=1; %let y1=%eval(&y.+1); %end; %else %do; %let m1=%eval(&m.+1); %let y1=&y.; %end; *01/MES MAS 1 - 01/MES; %let ini=%sysfunc(mdy(&m.,1,&y.)); %let fin=%sysfunc(mdy(&m1.,1,&y1.)); %let dias=%eval(&fin.-&ini.); *AL FINAL LA MACRO SOLO DEVUELVE UN NUMERO; &dias.; %mend; *EJEMPLO DE USO; data _null_; pepin=%dias(200402); put pepin; run; Ejemplo muy sencillo de código macro y que se entiende muy facilmente, como siempre recomiendo que copiéis y peguéis en vuestro SAS y lo entenderéis enseguida. El caso es que calculo el número de días de un mes como la diferencia entre el día 1 del mes en estudio frente al día 1 del mes mas 1 en estudio. Si disponemos de una fecha SAS recomiendo usar la función INTNX para determinar el número de días del mes, ejemplo: ...

29 de julio de 2010 · rvaquerizo

Monográfico. Funciones `INTNX` e `INTCK` para fechas en SAS

Las funciones INTNX e INTCK de SAS atraen muchas visitas a esta web. Aunque ya hay algún mensaje en el que muestro como funcionan creo que algunos trabajadores me agradecerán este monográfico. INTNX e INTCK son funciones para trabajar con fechas en SAS. INTNX sirve para trabajar con periodos luego el resultado que ofrece será una fecha e INTCK sirve para trabajar con intervalos, luego el resultado que nos ofrece será un número entero. Esta es la premisa fundamental. Entonces: ...

6 de julio de 2010 · rvaquerizo

Macros SAS. Primer y último día del mes de una fecha SAS

Me debo a vosotros, mis lectores. Y he tenido visitas que buscaban como obtener el primer y el último día de un mes con SAS. Como Análisis y Decisión es una web personalizada voy a dar respuesta a esas búsquedas. Para ello tengo os planteo dos macros de SAS, además nos servirán para entender mejor la función INTNX para operar con fechas. El siguiente ejemplo parte de la necesidad de obtener, dada una fecha, el primer y último día del mes de la fecha dada: ...

23 de diciembre de 2008 · rvaquerizo

Macros SAS. Transformar un numérico a fecha

A continuación vamos a plantear una macro de SAS bastante sencilla que nos permitirá transformar valores numéricos del tipo 20080607, fechas en formato AAAAMMDD pero que son numéricas, a valores fecha en SAS que nos permitirán realizar operaciones. Siguiendo el sistema de todos los mensajes de AyD trabajaremos con ejemplos para estudiar su utilidad. Partimos de dos fechas en formato AAAAMMDD y desamos realizar una diferencia entre ellas: data _null_; y=20070101; m=20080110; dif=m-y; put dif; run; En el log obtenemos que la diferencia entre estas 2 fechas es 10009, necesitamos transformarlas en variables numéricas pero del tipo fecha. Tenemos múltiples posibilidades para realizar esta transformación, pero en este caso voy a emplear la función de creación de fecha en SAS MDY(mes,día,año). Para conseguir del valor AAAAMMDD el mes, el día y el año emplearemos las funciónes MOD para calcular el módulo e INT para obtener la parte entera de una operación: ...

20 de noviembre de 2008 · rvaquerizo

Trabajo con `fechas SAS`. Funciones `fecha`

En las entregas anteriores del monográfico sobre fechas SAS hemos estudiado como almacena internamente las fechas el sistema y los formatos más prácticos que disponemos para visualizarlas. En esta última entrega veremos algunas de las funciones de fecha hora de las que dispone SAS. Las funciones las vamos a dividir en 4 grupos: Funciones de extracción de fecha Funciones de creación de fecha Funciones de duración Funciones de intervalo Las funciones de extracción de fecha nos permiter «extraer» información de variables de fecha/hora, veamos un ejemplo para extraer la fecha y la hora de una variable fecha/hora: ...

17 de noviembre de 2008 · rvaquerizo

Trabajo con fechas SAS. Formatos de fecha SAS más utilizados

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: ...

10 de noviembre de 2008 · rvaquerizo