Separar columna coordenadas en longitud y latitud con R

7 julio, 2021 | by Edwin Mendivil Barceló

Convertir columna de coordenadas en variables separadas de longitud y latitud con R para visualizar datos espaciales.

miniatura separar coordenadas con R

Para un analista de datos o entusiasta de la ciencia de los datos es muy común encontrar datasets espaciales con datos de coordenadas (longitud y latitud) en una sola columna. Esto puede resultar un inconveniente al momento de tratar de por ejemplo graficar ubicaciones sobre un mapa. Lo ideal es que estén separadas las columnas de longitud y latitud para hacer más rápido la tarea de la visualización de los datos.

En este post te indico una manera de manipular un dataset con las características que te menciono para separar esa variable o columna del dataframe. Haremos uso de las librerías dplyr y tidyr que hacen parte del universo de tidyverse.

 

EL DATASET EN CUESTIÓN:

El dataset con que trabajaremos tiene datos sobre las ubicaciones de las estaciones hidrometeorológicas de Colombia, tomado de: datos.gov.co

 

LO QUE QUEREMOS LOGRAR

Hacer un mapa con las ubicaciones de cada estación haciendo uso de ggplot2. Como bien sabemos el código nos pedirá las variables long y lat para “x” e “y” respectivamente, las cuales no las tenemos de manera explícita en el dataframe que usaremos. Este es el código que necesitaremos

ggplot(nombre_db, aes(x=long, y=lat)) + geom_point()

 

COMO ENCONTRAMOS LA COLUMNA DE COORDENADAS EN EL DATASET:

Una vez descargado el archivo .csv, lo leemos en R y vemos que la latitud y longitud están en una sola variable o columna del dataframe.

estaciones_db <- read.csv(“/Users/tu_usuario/Documents/30DayMapChallenge/Estaciones_en_Colombia.csv”, stringsAsFactors = F)
datatable(estaciones_db)

 

tabla coordenadas unidas

 

LIBRERÍAS A UTILIZAR

library(readr) #Leer archivo csv
library(dplyr) #Manipular el dataset
library(tidyr) #Separar columna
library(ggplot2) #Hacer el mapa
library(DT) #(Opcional) para visualizar la db estilo Excel

 

ARREGLANDO EL PROBLEMA:

Básicamente lo logramos manipulando el dataframe con dplyr y tidyr para separar la columna

estaciones_db_cleaned <- estaciones_db %>%
#Eliminamos paréntesis
mutate(Ubicación2 = gsub(“[()]”, “”, Ubicación)) %>%
#Usamos la función separate de tidyr para separar la columna, indicamos el nombre de la columna a separar, le decimos que el primer valor se llamara “lat” y el segundo valor “long”, y que la coma “,” con el espacio será lo que se va a tener en cuenta para separar
separate(Ubicación2, c(“lat”, “long”), sep=”, “) %>%
#Por último convertimos Lat y Long a double o valor numérico
mutate(lat = as.numeric(lat), long = as.numeric(long))

 

COLUMNA DE COORDENADAS SEPARADA EN LATITUD Y LONGITUD

Verifiquemos nuestro resultado

datatable(estaciones_db_cleaned)

tabla coordenadas separadas longitud y latitud

 

Y listo con 4 líneas de código hemos separado la columna en longitud y latitud.

Te muestro nuevamente el código sin tantos comentarios ?

estaciones_db_cleaned <- estaciones_db %>%
#Eliminamos paréntesis
mutate(Ubicación2 = gsub(“[()]”, “”, Ubicación)) %>%
#Separamos columna con separate de tidyr
separate(Ubicación2, c(“lat”, “long”), sep=”, “) %>%
#Convertimos Lat y Long a double o valor numérico
mutate(lat = as.numeric(lat), long = as.numeric(long))

 

HACIENDO NUESTRO MAPA DE UBICACIONES CON GGPLOT2

Ahora podemos graficar las ubicaciones con ggplot2, usando las variables de longitud (long) y latitud (lat) en “x” e “y”, respectivamente:

 

ggplot(estaciones_db_cleaned, aes(x=long, y=lat, alpha=0.9, colour=factor(Categoria))) + geom_point() + theme_void()

Mapa en R de ubicacion estaciones hidrometeorologicas

 

Espero que te haya sido de utilidad este post, algún comentario o sugerencia escríbeme al correo vizualdatos@gmail.com o envíame un mensaje directo a mi twitter @vizualdatos

Foto autor

Edwin Mendivil Barceló

@vizualdatos

Artículos recientes

Ciudad de la Creatividad

Hablemos!, te puedo ayudar con ese gráfico o reporte que necesitas para tu organización. El servicio de visualización de datos se presta presencialmente en la ciudad de Santa Marta, Colombia. Si estas en Barranquilla, Bogotá u otra ciudad, trabajo contigo de manera remota.

  • vizualdatos@gmail.com
  • Celular/Whatsapp: 312 664 38 35
  • Santa Marta, Colombia