Truco Excel. Abrir múltiples libros de Excel en distintas hojas de un nuevo libro

Hace tiempo escribí sobre el método de Excel GetOpenFilename para abrir archivos desde Excel a través del explorador de archivos; ahora le damos una nueva vuelta de tuerca a aquella entrada y, de forma simple, podemos abrir múltiples libros de Excel que, además, se añadirán de forma sucesiva en un nuevo libro. En este enlace podéis descargaros el archivo y, como veréis, no tiene nada. Un botón “Abrir Excel” realiza el proceso: se abre el explorador de Windows y podéis seleccionar múltiples archivos Excel que se almacenan en un array. La macro a ejecutar es la siguiente: ...

17 de marzo de 2016 · rvaquerizo

Como hacer un mapa de España por códigos postales con QGIS

Editado 2022: Francisco Goerlich ha elaborado una versión que de nuevo puede obtener los datos de CartoCiudad. Volveremos sobre el tema y dejaremos una capa que pueda ser reutilizable. https://www.uv.es/goerlich/Ivie/CodPost Editado 2019: Como podéis leer más abajo, Correos ha impedido al proyecto CartoCiudad incluir los mapas de España por código postal; ahora es necesario comprarlos. Sin embargo, hay versiones antiguas como las que se descargó en su día Íñigo Flores. Con estas descargas yo he elaborado un mapa de España por códigos postales: ...

12 de febrero de 2016 · rvaquerizo

Macro SAS. Número de variables de un dataset en una macro

Una macro que nos permite saber el número de variables que tiene un conjunto de datos SAS. Es una petición de una lectora y la macro es análoga a otra que ya pusimos en el blog allá por 2010. Veamos cómo funciona: %macro numvars(datos); %global numvars; /*ABRIMOS EL CONJUNTO DE DATOS PARA VER SUS CARACTERISTICAS*/ %let datosid = %sysfunc(open(&datos)); /*SI ESTA ABIERTO ENTONCES LA FUNCION ATTRN NOS DA EL NUMERO DE VARIABLES*/ %if &datosid %then %do; %let numvars =%sysfunc(attrn(&datosid,nvars)); /*CERRAMOS EL CONJUNTO DE DATOS*/ %let rc = %sysfunc(close(&datosid));%end; %mend; data ejemplo; a=1; b=2; c=3; d=4; f=5; g=6; run; %numvars(ejemplo); %put _user_; Utilizamos las funciones I/O de SAS, en concreto ATTRN que unido a NVARS nos permite saber el número de variables que tiene un dataset, el número de variables lo ponemos en la macrovariable global &numvars.. ...

22 de enero de 2016 · rvaquerizo

TwitteR con R. El hashtag `#rstats`

El objetivo de la entrada es empezar a analizar tweets con R y qué mejor comienzo que usar el hashtag #rstats para ver los usuarios que más lo utilizan. El primer paso es crear una app con Twitter; para ello, nos dirigimos a https://apps.twitter.com/ y creamos una aplicación. Crearla es muy sencillo: sólo necesitamos una descripción y un nombre. La aplicación será la que permitirá a R interaccionar con Twitter mediante OAuth; para realizar esta interacción entre la aplicación y nuestra sesión de R es imprescindible: ...

6 de enero de 2016 · rvaquerizo

Creacion de ranking con R

Hasta la fecha, si necesitaba crear un ranking o un orden con R, realizaba la tarea del siguiente modo: nombres <- c("grupo_1", "grupo_2") grupo <- sample(nombres, 10, replace = TRUE, prob = c(0.5, 0.5)) dataset <- data.frame(grupo) dataset$importes <- runif(10, 100, 30000) # Creación del ranking de las variables agrupadas dataset$ranking <- ave(dataset$importes, dataset$grupo, FUN = function(x) rank(x, ties.method = "first") ) Es una agrupación de factores a la que asignamos el orden con rank; con ties.method = "first", esta agrupación se lleva a cabo desde el primer nivel del factor. El resultado se puede comprobar haciendo: ...

20 de diciembre de 2015 · rvaquerizo

Macro SAS. Crear variables dummy desde una variable categórica

En alguna ocasión ya he conjugado el verbo dumificar y, preparando una segmentación, he creado una macro SAS que genera variables dummy a partir de variables categóricas. Es decir, si la variable A toma valores 1, 2 y 3, tendría que generar A_1 con valor 1 si A toma 1 y con valor 0 en caso contrario; A_2 tiene valor 1 si A es igual a 2, y A_3 tiene valor 1 si A es igual a 3. No es complicado de comprender: pasamos de una variable con tres niveles a tres variables con valores 0 o 1. Para ésto podemos emplear array o la siguiente macro: ...

2 de diciembre de 2015 · rvaquerizo

Truco Excel. Función para identificar el color de una celda

En alguna entrada anterior ya vimos cómo identificar el color de una celda con Excel. Recientemente me trasladaron una duda: se trataba de realizar una acción determinada si el color de la celda era distinto. Algo muy habitual cuando realizas alguna validación visual y marcas celdas con otro color. La solución es sencilla: se trata de crear nuestra propia función que identifique el color de la celda: Function color_celda(celda As Range) color_celda = celda.Interior.Color End Function En este caso podríamos realizar funciones del tipo =SI(color_celda(A1) <> 16777215; ACCION1; ACCION2); además, podemos darle otra vuelta de tuerca y, si deseamos ordenar por colores, podemos hacer: ...

1 de diciembre de 2015 · rvaquerizo

Truco SAS. Identificar el lunes de cada semana para clasificar por semanas

El otro día una lectora preguntaba una duda: quería encontrar el lunes dentro de un conjunto de fechas con el objetivo de clasificar semanas. Para realizar esta tarea contamos con la función WEEKDAY de SAS, que nos permite numerar los días de la semana donde el domingo es el primer día de la semana. De este modo hay que restar los días necesarios para llegar al día 2 de la semana. Lo vemos con un ejemplo: ...

10 de noviembre de 2015 · rvaquerizo

Mapas SAS a partir de shapefile

Los mapas como éste no los hago habitualmente con SAS, pero puede interesaros saber cómo se pueden hacer. Para la realización de mapas a partir de shapefiles suelo usar R; los que seáis habituales del blog sabéis que hay entradas al respecto. Sin embargo, recientemente he conocido QGIS, que interactúa a la perfección con Excel. El ejemplo de hoy es para aquellos que no conocéis QGIS o R y estáis más habituados a trabajar con SAS. Se trata de importar un shapefile con SAS, poder hacer un sencillo tratamiento de datos y posteriormente realizar un mapa muy simple. Para ilustrar el ejemplo, vamos a realizar un mapa por municipios de una provincia española con SAS y, para ello, necesitamos un fichero .shp que os vais a descargar de http://www.gadm.org/country; seleccionáis los mapas de España y descargáis el ZIP que contiene los archivos. ...

29 de octubre de 2015 · rvaquerizo

Truco para EMB Emblem. Cambiar el nivel base de un factor

Un buen truco que me han descubierto hoy para los usuarios de EMB Emblem: cómo cambiar el nivel base de un factor de datos sin necesidad de pasar por los datos (habitualmente SAS) o sin hacerlo a posteriori (habitualmente Excel, que era lo que hacía el ahora escribiente). Cuando se generan los datos, se genera el fichero binario .BID y el fichero que se emplea para leer ese fichero, el .FAC. Para alterar el nivel base, debemos abrir este archivo .FAC con un bloc de notas o cualquier editor de texto plano. Al abrirlo, tendremos lo siguiente: ...

22 de octubre de 2015 · rvaquerizo