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

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

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

Entrenamiento, validación y test

Cuando realizamos modelos, hay 3 conjuntos de datos fundamentales: Conjunto de datos de entrenamiento: son los datos que entrenan los modelos. Conjunto de datos de validación: selecciona el mejor de los modelos entrenados. Conjunto de datos de test: nos ofrece el error real cometido con el modelo seleccionado. Para entender mejor su importancia y cómo funcionan, he preparado el siguiente esquema/ejemplo: Una empresa de telecomunicaciones, de cara a mejorar la efectividad de sus campañas comerciales, decide realizar un modelo de propensión a la desconexión. Se define un universo como los clientes activos al último día de un mes y se determina cuáles de ellos han desconectado nuestra línea al mes siguiente. Podría ser recomendable utilizar varias cosechas de clientes para evitar efectos estacionales o campañas agresivas de la competencia. Para el universo seleccionado, la tasa de desconexión se sitúa en un 12%. Este universo hemos de dividirlo en 2 partes. La primera de ellas formará el conjunto de datos de entrenamiento y validación y, aquí, es importante realizar un sobremuestreo estratificado del número de desconexiones para mejorar el entrenamiento del modelo. El estrato será «tiene evento» vs. «no tiene evento». En el esquema gráfico, aumento la proporción de desconexiones hasta un 50%; no es una proporción imprescindible: si nuestra muestra no nos permite esa proporción, algunos expertos con los que he trabajado y yo mismo aseguramos que un 20% de eventos puede ser suficiente; pero, si es posible, buscaremos el 50-50. En un árbol de decisión (por ejemplo), este sobremuestreo nos identificaría ramas extremas. Una vez definido el conjunto de datos sobremuestreado, lo separamos en entrenamiento y validación. Este dinosaurio siempre deja la proporción 70-30… ...

28 de julio de 2010 · rvaquerizo

Trucos R. La función mod para R

Buscando algunas cosas sobre R, he encontrado esta función que hice hace mucho tiempo. De hecho, puedo decir que es de las primeras que hice, allá por 2001 (creo), cuando empecé a conocer esto de R. Por aquel entonces aseguré que el futuro pasaba por R y, nueve años después, sigo diciendo lo mismo; el tiempo me dará la razón; lo que no me imaginaba es que hiciera falta tanto tiempo. En fin, historias del dinosaurio. ...

27 de julio de 2010 · rvaquerizo