Trucos R. Establecer la configuración local de una fecha

Cuando manejamos datos, las fechas nos producen muchos quebraderos de cabeza; por ejemplo, cuando tenemos que transformar un carácter a fecha. En mi opinión, R es una de las herramientas más flexibles y rápidas para trabajar con fechas (claro que, acostumbrado a SAS, cualquier otra herramienta me parece perfecta). A lo que vamos, imaginemos la siguiente situación: # ?as.Date x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960") z <- as.Date(x, "%d%b%Y") z # [1] NA NA "1960-03-31" "1960-07-30" Se trata de transformar un texto a fecha en R. El formato del texto es día, mes en inglés y año con cuatro cifras. Para transformar a fecha tenemos la función as.Date, que recibe como parámetros el objeto y el formato de la fecha (el más habitual sería %d/%m/%Y para 10/09/1976). Para meses en formato nombre empleamos %b, pero en este caso "1jan1960" nos produce un valor perdido; sin embargo, "31mar1960" sí se transforma correctamente. ¿Por qué motivo sucede esto? ...

2 de septiembre de 2010 · rvaquerizo

Trucos SAS. Por qué hay que usar objetos hash

Quiero trabajar un poco con objetos hash en SAS. Pero antes quería demostraros, con una comparativa de código muy sencilla y muy rápida, la necesidad de trabajar con estos objetos en SAS. La problemática es muy habitual en nuestro trabajo diario: tenemos una tabla SAS muy grande, con millones de registros, y tenemos que cruzarla con otra tabla SAS muy pequeña para quedarnos sólo con los registros que aparezcan en la tabla pequeña. Tenemos unos clientes que han recibido un contacto comercial y hemos de quedarnos con sus saldos históricos en determinados productos. Veamos los distintos métodos que planteo para machear registros; conjuntos de datos de partida: ...

1 de septiembre de 2010 · rvaquerizo

Detalles técnicos del seguro de crédito. El factor de uso del importe concedido

El seguro de crédito me sigue pareciendo muy interesante técnicamente y, de vez en cuando, hay que dedicarle alguna entrada en el blog. Voy a recordar viejos tiempos escribiendo sobre el factor de uso del importe concedido. Nos ponemos en antecedentes: en el seguro de crédito, el riesgo es el impago de una transacción comercial. Las empresas que lo contratan tienen que disponer de información muy exacta de las ventas a crédito a sus clientes, a los que llamaremos «deudores». Esta información ha de estar en posesión de la compañía aseguradora que cubre la operación, ya que, en caso de siniestro, define la cantidad máxima a indemnizar al asegurado («importe siniestral»). Es decir, el asegurado «comunica» a la aseguradora el importe de la venta a su deudor y la aseguradora asume el riesgo de impago sobre un porcentaje del total: tiene un «porcentaje garantizado». Un inciso: las aseguradoras de crédito, además, ofrecen información sobre deudores, gestión de recobros… Pero la función fundamental del seguro de crédito es asumir el riesgo de impago de las transacciones de los deudores con sus asegurados; esta función es imprescindible para el desarrollo de un país, así de claro. ...

31 de agosto de 2010 · rvaquerizo

Trucos Excel. Gráficos con caracteres

Quería plantear hoy un truco Excel que no es un truco como tal, sino más bien una idea para que podáis hacer más vistosos vuestros informes con gráficos de caracteres, sobre todo para aquellos dinosaurios que hagáis muchos rankings o puntuaciones. La idea es muy sencilla: se trata de emplear la función REPETIR de Excel pero «con talento». =REPETIR("|"; E12) nos repite el pipe | tantas veces como le indiquemos en la casilla E12. Pero hay algo que sí tiene importancia: la fuente que elijamos para el pipe: ...

13 de agosto de 2010 · rvaquerizo

Trucos SAS. Matrices de adyacencia con SAS

SAS no está pensado para el cálculo matricial, pero hay ocasiones en las que hemos de trabajar con ellas. Uno de los casos típicos es la matriz de adyacencia. Se trata de partir de estos datos: a b a e b c b e c e d a Para crear: a b c d e a 0 1 0 1 1 b 1 0 1 0 1 c 0 1 0 0 1 d 1 0 0 0 0 e 1 1 1 0 0 Yo planteo la siguiente metodología: ...

5 de agosto de 2010 · rvaquerizo

Bootstrap con SAS sin complicaciones

El bootstrap es una técnica de muestreo que, a partir de la simulación, crea sucesivas muestras con reemplazamiento que teóricamente son una buena aproximación al universo muestral. Por aquí podéis encontrar información y bibliografía al respecto. Lo que yo quería comentaros hoy es algo a lo que ya hizo referencia la comunidad de SAS en español. Hacer bootstrap con SAS no es complicado. Cuando buscas información ves unas macros que dan miedo y piensas “esto es un software”, sin embargo el tema no es tan difícil y con un paso DATA ya podemos poner a funcionar esta técnica. Veamos el ejemplo, partimos de un conjunto de datos SAS que obtenemos en esta web interesantes ejemplos verdad. Nos bajamos el archivo a una ubicación de nuestra máquina o leemos la url y comenzamos a trabajar: ...

3 de agosto de 2010 · rvaquerizo

Lecciones de economía de un ignorante. Cosas que no comprendo

Juan Manuel de Prada escribió esto en ABC. Y yo he conocido a un tipo de Indra que es su doble. Pero siguiendo el hilo de este opinador, hay otra cosa que tampoco comprendo: el BBVA obtiene unos “buenos y sólidos resultados superando expectativas en ingresos”, incluido un escandaloso aumento de las comisiones, harina de otro costal. Bueno, pues tras obtener estos resultados con unos márgenes brutos asombrosos, va y emite unos bonos con un diferencial (no decir spread, que es de catetos) con respecto al Euribor a 3 meses (por favor, no decir mindswap) muy por encima de anteriores emisiones. ...

3 de agosto de 2010 · rvaquerizo

Lecciones de economía de un ignorante. La privatización de las cajas será una chapuza

Interesante noticia leída en Cinco Días. La Ley de Cajas, el FROB y otros artificios se han hecho exclusivamente para la rápida privatización de las Cajas de cara a evitar un posible corralito. Se está pasando de puntillas sobre el tema porque es una verdadera chapuza. Los principales puntos sobre los que se quería incidir con todas estas leyes ad-hoc pensadas a la hora de la comida por nuestros representantes políticos en un restaurante vegetariano que hay detrás del Congreso son: ...

2 de agosto de 2010 · rvaquerizo

David gana a Goliat. La sentencia del caso SAS frente a WPS

Estaba esperando que saliera la sentencia. Además cabía la posibilidad de pertenecer a Goliat y tenía la boca cerrada. Y resulta que tenemos una de las sentencias más interesantes en cuanto a software se refiere: http://www.bailii.org/ew/cases/EWHC/Ch/2010/1829.html Yo no soy capaz de leerme eso en inglés, pero el traductor de Google me ha ayudado: Por las razones anteriormente expuestas, llego a la conclusión de la siguiente manera: i) Si bien no estoy convencido de que Pumfrey J se equivocó al concluir en Navitaire que, sobre la correcta interpretación del artículo 1 (2) de la Directiva sobre el software, los derechos de autor en los programas de ordenador no protegen a los lenguajes de programación de la copia, estoy de acuerdo con él en que se trata de una cuestión sobre la que se requiere la orientación del Tribunal de Justicia (véanse los párrafos 211-218 supra). ...

30 de julio de 2010 · 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 SÓLO DEVUELVE UN NÚMERO */ &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 fácilmente; 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 más 1. ...

29 de julio de 2010 · rvaquerizo