Trabajando con R y Julia desde RStudio

Muchas veces pienso que no es R, es RStudio. Por eso hoy traigo unas líneas para ilustrar el uso de Julia en R Markdown y poder elaborar vuestros documentos y vuestra documentación con RStudio. Todo el trabajo se articula entorno a la librería JuliaCall y se fundamenta en el uso de Markdown, donde usaremos indistintamente R o Julia. Todo comienza con un chunk de R: # install.packages("JuliaCall") library(JuliaCall) julia_setup() Instalamos el paquete y “suponemos” que hemos instalado Julia; de este modo, nada más cargar JuliaCall pondremos julia_setup() y ya dispondremos de nuestro entorno de Julia. Una vez ejecutados estos pasos en R, ya podemos trabajar con algún chunk de Julia y con código conocido: ...

23 de septiembre de 2021 · rvaquerizo

Obtener las coordenadas de una dirección con R y la API de Google Earth

Obtener coordenadas desde la API de Google Maps a partir de una dirección consiste in realizar la petición a la API y obtener un JSON; pero tenemos la suerte de contar con R y ese proceso lo podemos hacer de forma más sencilla e incluso lo podemos tabular. In realidad son cuatro líneas de código, pero es posible que a alguien le sean de utilidad. Lo primero es disponer de un proyecto en la Google Cloud Platform; si ya lo tenemos, lo que necesitamos es autorizar a este proyecto a acceder a la API de Google Maps. Para ello, yo he usado este enlace y he habilitado la Geocoding API, la que vamos a usar para la consulta de la dirección. ...

6 de septiembre de 2021 · rvaquerizo

Leaflet con R. Apuntes de mapas de coordenadas

Estoy desarrollando cosas muy interesantes con leaflet en R y quería poner unos breves apuntes por si a alguien le sirvieran. En Stack Overflow y otras webs al uso tenéis mucha más ayuda y código de mayor interés, pero en pocas líneas espero sentar las bases de uso de leaflet. Para ilustrar el ejemplo, me he descargado unos datos de datos.gob.es con las coordenadas de los parques de bomberos de Madrid capital; la idea es representar estos puntos en un mapa. Lo primero es descargar los datos y ponerlos en una ubicación de nuestro equipo: ...

10 de junio de 2021 · rvaquerizo

Transponer data frames con R. De filas a columnas y de columnas a filas

Entrada para recordar cómo transponer data frames con R: cómo pasar de $n$ filas a $n$ columnas manteniendo campos identificativos y cómo pasar de columnas a filas y crear un campo identificativo. Siento que últimamente, más que un blog, tengo un cuaderno de apuntes, pero si estos apuntes pueden ayudar a alguien, mejor. En realidad, la entrada es un ejemplo ilustrativo de las funciones de tidyr pivot_wider y pivot_longer. Pasar de filas a columnas # install.packages("palmerpenguins") library(palmerpenguins) library(tidyr) library(dplyr) agregado_especies <- penguins %>% group_by(species, year) %>% summarise(bill_depth_mm = mean(bill_depth_mm, na.rm = TRUE)) %>% pivot_wider(names_from = year, values_from = bill_depth_mm, names_prefix = "ANIO_") Teníamos un campo por filas que contenía el año; hemos transpuesto por ese campo año y creado tantas variables (names_from) como años tengo para las variables numéricas deseadas (values_from); además, hemos creado esas variables con el prefijo ANIO_. ...

19 de mayo de 2021 · rvaquerizo

Incluir subplot en mapa con ggplot

Se ha trabajado un mapa de España con ggplot2 al que podemos añadir subplots en función de unas coordenadas; en este caso, es un mapa de España que incluye gráficos de líneas para cada Comunidad Autónoma. Vamos a representar el exceso de mortalidad que está suponiendo la pandemia por COVID, un dato que se puede seguir con MoMo del ISCIII. Los que seguís el blog ya conocéis una entrada en la que se escribió sobre la inclusión de pie charts en mapas con R; esta entrada supone ir un paso más allá. ...

8 de febrero de 2021 · rvaquerizo

Mapas estáticos de Perú con R y Python a nivel de Distrito

Petición de un lector: un código de ejemplo para hacer mapas de Perú con R y con Python. Estos ejemplos quedan resumidos en un solo sitio y se va a emplear un notebook desde RStudio donde tendremos bloques de R y Python en función de lo que necesitemos. Mapa de Perú con R y ggplot2 library(tidyverse) library(reticulate) library(raster) library(maptools) # Obtenemos datos de GADM peru_shp <- getData('GADM', country = 'Peru', level = 2) # Convertimos a data frame para ggplot2 peru_df <- fortify(peru_shp, region = "NAME_2") # Generamos datos aleatorios para ilustrar distritos <- data.frame(id = unique(peru_df$id)) distritos$aleatorio <- runif(nrow(distritos), 10, 30) # Unimos datos con el mapa peru_plot <- left_join(peru_df, distritos, by = "id") # Pintamos el mapa ggplot(data = peru_plot, aes(x = long, y = lat, group = group)) + geom_polygon(aes(fill = aleatorio)) + scale_fill_continuous(low = "white", high = "red") + theme_minimal() Código conocido: obtenemos el mapa de GADM con nivel 2 (distritos). Mediante fortify (o map_data) creamos el data frame que necesita ggplot2. En este caso genero unos datos aleatorios; en vuestro caso tendríais que cruzar vuestros datos (siempre es mejor emplear una codificación INE o similar en vez del nombre). El resultado: ...

28 de diciembre de 2020 · rvaquerizo

Corrección ortográfica en RStudio

Si os estáis acostumbrando a usar RStudio como editor de texto y no confiáis en vuestras capacidades ortográficas, sabed que podéis hacer una revisión ortográfica de vuestro documento desde RStudio. Es muy sencillo: lo primero es Tools –> Global Options y luego te vas a Spelling (ortografía); allí eliges el diccionario que quieres usar. Si no aparece el tuyo, lo puedes descargar o actualizar: Ahora, en los documentos de R que estéis editando, si pulsáis F7 podréis realizar una revisión ortográfica del texto. ...

27 de diciembre de 2020 · rvaquerizo

Mi curriculum con RMarkdown y pagedown

Me he puesto a actualizar mi currículum y a la vez estoy aprendiendo markdown; en ese proceso, José Luis Cañadas me dijo: «usa pagedown». No era yo fan de RMarkdown, pero me estoy reconvirtiendo. Me está pasando con markdown algo parecido a lo que me pasó con el picante: no me gustaba hasta que lo probé y, desde entonces, me encanta. ¿Por qué lo probé? Porque había decidido tomarme un tiempo sabático para elaborar una serie de cursos, webinars y actualizar la web, que son 12 años sin modificaciones. Tras tres meses sabáticos estoy harto de no trabajar: son 25 años seguidos trabajando, 20 gestionando datos y otros 5 en los que hice de todo (hasta servir en la Armada). No soy capaz de estar sin trabajar; el primer paso es elaborar un resumen de mi vida profesional y dar un nuevo formato, porque llevo con el mismo unos 12 años. ...

21 de diciembre de 2020 · rvaquerizo

Evaluando la capacidad predictiva de mi modelo `tweedie`

Cuando tenemos que evaluar el comportamiento de un modelo de clasificación binomial, empleamos sensibilidad, especificidad… ya he hablado sobre ese tema, aunque volveré sobre ello. Sin embargo, si nuestro modelo estima un valor, es posible que no tengamos tan claro cómo está funcionando su capacidad predictiva. Lo que traigo hoy es un análisis muy básico, pero que entienden muy bien aquellas personas que no tienen grandes conocimientos en ciencia de datos; además, es una continuación de la entrada en la que se ilustraba un ejemplo de uso de los modelos Tweedie. ...

17 de diciembre de 2020 · rvaquerizo

Librería `mapSpain` en `rstats`. Mapas estáticos de España

Más mapas estáticos de España con R, esta vez con la librería mapSpain de Diego Hernangómez, que simplifica mucho la realización de esta tarea. El primer ejemplo es un mapa del exceso de mortalidad por Comunidad Autónoma para el año 2020, reaprovechando un código del blog: library(mapSpain) library(sf) library(tidyverse) library(lubridate) df <- read.csv("https://momo.isciii.es/public/momo/data") df <- df %>% dplyr::filter(ambito == 'ccaa' & nombre_sexo == 'todos' & cod_gedad == 'all') %>% mutate(fecha_defuncion = as.Date(fecha_defuncion, '%Y-%m-%d')) %>% filter(year(fecha_defuncion) >= 2020) df <- df %>% mutate(ola = case_when( fecha_defuncion <= as.Date("2020-03-07") ~ 'Anteriores', fecha_defuncion <= as.Date("2020-05-07") ~ 'Primera ola', fecha_defuncion <= as.Date("2020-08-01") ~ 'Verano', TRUE ~ 'Segunda ola'), exceso = round(defunciones_observadas / defunciones_esperadas - 1, 4) * 100, iso2.ccaa.code = paste0("ES-", cod_ambito)) agr <- df %>% dplyr::filter(ola == 'Primera ola') %>% group_by(iso2.ccaa.code) %>% summarise(exceso = round(sum(defunciones_observadas) / sum(defunciones_esperadas) - 1, 4) * 100) Como vemos en el código, se ha preparado una variable iso2.ccaa.code para el cruce con el objeto espacial que vamos a obtener con mapSpain. Ahora, para realizar el mapa sólo necesitamos unas líneas de código: ...

10 de diciembre de 2020 · rvaquerizo