PREPARATIVOS INICIALES

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.

Función separate()

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 = "\\.")

Función unite()

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 :

  1. 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.

  2. 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.

  3. Crea una nueva columna llamada habitaciones_baños uniendo las columnas habitaciones y baños, separadas por una barra (/) usando unite().

  4. Convierte la columna superficie a texto y usa separate() para dividirla en parte entera y parte decimal, separando por el punto decimal.