Para no tener que cargar los paquetes dplyr y
tidyr, se procede a activar el paquete
tidyverse ya que incluye los dos anteriores como
dependencias
library(tidyverse)
Establecer la carpeta de trabajo
setwd("D:/G2040/TEMA_1_Introduccion/TEMA_1_ejercicios")
Cargar el fichero
load("zonas_verdes.RData")
Antes de comenzar, hay que recordar que separate() y unite() funcionan principalmente sobre variables de tipo carácter (chr). Así que algunos ejercicios requerirán que previamente transformes ciertas variables a texto si no lo son.
La función separate() puede ser usada para separar los
valores de una columna de un dataframe en diferentes columnas. La
sintaxis es la siguiente:
separate(data, col, into, sep)
donde:
Por ejemplo, se puede dividir la variable
fecha_inauguracion en tres columnas nuevas: año, mes y
día.
zonas_sep_fecha <- zonas_verdes %>%
mutate(fecha_inauguracion = as.character(fecha_inauguracion)) %>%
separate(fecha_inauguracion, into = c("año", "mes", "día"), sep = "-")
Igualmente, se podría convertir la columna superficie en
texto y usa separate() para dividirla en superficie_entera y
superficie_decimal usando el punto como separador.
zonas_superficie_sep <- zonas_verdes %>%
mutate(superficie_chr = as.character(superficie)) %>%
separate(superficie_chr, into = c("superficie_entera", "superficie_decimal"), sep = "\\.")
La función contraria es unite(), que une varias columnas
de un dataframe en una única columna.
unite(data, col, into, sep)
donde:
Podríamos crear una nueva variable denominada
barrio_parques uniendo las columnas barrio y parques con
guiones (-).
zonas_barrio_parques <- zonas_verdes %>%
unite("barrio_parques", barrio, parques, sep = "-")
Se podría recomponer una columna de fecha en formato “día/mes/año”.
zonas_fecha_formateada <- zonas_verdes %>%
mutate(fecha_inauguracion = as.character(fecha_inauguracion)) %>%
separate(fecha_inauguracion, into = c("año", "mes", "día"), sep = "-") %>%
unite("fecha_formateada", día, mes, año, sep = "/")
Por úlitmo se podría crear una nueva columna, zona_id,
combinando barrio, ID y obras,
separados por guiones (-). Asegúrate de que obras sea
convertido en texto y e incluye que se tengan en cuenta los valores
NA.
zonas_id_compuesto <- zonas_verdes %>%
mutate(obras = as.character(obras)) %>%
unite("zona_id", barrio, ID, obras, sep = "-", na.rm = TRUE)
📝 ACTIVIDAD EN EL AULA :
Algunos nombres de barrios están formados por varias palabras. Usa separate() para dividir la columna barrio en dos nuevas columnas: barrio_1 y barrio_2, separando por el primer espacio.
Convierte la columna valor en tipo carácter y usa separate() para dividir los números en dos partes: una con los miles y otra con las unidades.
Crea una nueva columna llamada habitaciones_baños uniendo las columnas habitaciones y baños, separadas por una barra (/) usando unite().
Convierte la columna superficie a texto y usa separate() para dividirla en parte entera y parte decimal, separando por el punto decimal.