1 Ejemplo encuesta

  • Importar los datos de la encuesta sin depurar.
  • Consultar la tipificación que asignó R a las columnas de la base de datos.

1.1 Importando datos

library(readxl)
encuesta_mal <- read_excel("encuesta.xlsx")
encuesta_mal

1.2 Tipificación de datos

library(tidyverse)
glimpse(encuesta_mal)
## Rows: 30
## Columns: 11
## $ `Marca temporal`                                                                                                        <dttm> …
## $ `1. ¿Cuál es su promedio académico actual?`                                                                             <chr> …
## $ `2. ¿Cuál es su color favorito?`                                                                                        <chr> …
## $ `3. En promedio, ¿Cuántas horas de la semana dedica a actividades académicas (estudiar, leer, clases, etc.)?`           <chr> …
## $ `4. En promedio, ¿Cuántas horas duerme al día?`                                                                         <chr> …
## $ `5. ¿En cuántas redes sociales está inscrito actualmente?`                                                              <dbl> …
## $ `6. ¿Cuál es la red social que más frecuenta?`                                                                          <chr> …
## $ `7. Desde que terminó el bachillerato, ¿Cuánto tiempo tardó en ingresar a la universidad?`                              <chr> …
## $ `8. ¿Tiene usted hábito de lectura?`                                                                                    <chr> …
## $ `9. En promedio, ¿Cuántas horas a la semana permanece conectado a internet (redes sociales, Whatsapp,  otras páginas)?` <chr> …
## $ `10. ¿Actualmente trabaja?`                                                                                             <chr> …

1.3 Depuración

  • Edición de nombres.
  • Seleccionar todas las variables excepto la fecha.
  • Conversión de formatos. Por ejemplo pasamos la variable “promedio_academico” de caracter a numérico.
  • Extracción de números con la función “parse_number()”.
  • Unificación de texto en la variable “color_favorito”.
# Vector de nombres
nombres <- c("fecha", "promedio_academico", "color_favorito",
             "horas_estudiar", "horas_dormir", "redes_sociales",
             "redsocial_favorita", "bachiller_universidad",
             "lectura", "horas_internet", "trabajo")

encuesta_bien <- encuesta_mal %>% 
  set_names(nombres) %>% 
  select(-fecha) %>% 
  mutate(
    promedio_academico = as.numeric(promedio_academico),
    horas_estudiar = parse_number(horas_estudiar),
    horas_dormir = parse_number(horas_dormir),
    horas_internet = parse_number(horas_internet),
    color_favorito = str_to_lower(color_favorito),
    color_favorito = str_to_sentence(color_favorito)
  )

encuesta_bien

1.4 Exportando datos

1.4.1 csv por comas

write_csv(encuesta_bien, "encuesta_bien.csv")

1.4.2 Excel

library(writexl)
write_xlsx(encuesta_bien, "encuesta_bien_excel.xlsx")

2 Ejemplo frutales

  • Objetivo: unir bases de datos de área sembrada, área cosechada, producción y rendimiento de frutales en el Valle del Cauca.

2.1 Área sembrada

  • Importar datos
  • Editar nombres de algunas variables.
  • Convertir de formato ancho a formato largo. Esto lo hacemos con la finalidad de tener una variable para el cultivo y otra para el área sembrada.
library(tidyverse)

area_sembrada <- read_csv("Superficie_Sembrada_con_Frutales_en_el_departamento_del_Valle_del_Cauca.csv") %>% 
  rename(Year = Año,
         Guanábana = `Guana bana`,
tricos = Citricos) %>% 
  pivot_longer(cols = -c(Municipios, Year),
               names_to = "Cultivo",
               values_to = "area_sembrada")

area_sembrada

2.2 Área cosechada

  • Importar datos
  • Editar los nombres de algunas variables. Debemos tener en cuenta que los nombres coincidan con los nombres de la base de datos anterior.
  • Filtrar filas con información errada. Por ejemplo “Year” igual a “año”.
  • Convertir de formato ancho a formato largo. Esto lo hacemos con la finalidad de tener una variable para el cultivo y otra para el área cosechada.
area_cosechada <- read_csv("Superficie_Cosechada_con_Frutales_en_el_Valle_del_Cauca_del_A_o_2000_al_2018.csv") %>% 
  rename(Year = año,
tricos = Citricos,
         Guanábana = `Guana bana`,
         `Melón A` = `Melón a`,
         `Melón B` = `Melon b`) %>% 
  filter(Year != "año") %>% 
  mutate(
    across(c(Year:Vid), as.numeric)
  ) %>% 
  pivot_longer(cols = -c(Municipios, Year),
               names_to = "Cultivo",
               values_to = "area_cosechada")

area_cosechada

2.3 Producción

  • Importar datos
  • Editar nombres de algunas variables.
  • Filtrar filas con etiquetas erradas.
  • Reemplazar las comas (“,”) por el punto (“.”) para llevar a cabo la conversión a numérico.
  • Conversión a numérico de variables cuantitativas.
  • Conversión de formato ancho a formato largo. Esto lo hacemos con la finalidad de tener una variable para el cultivo y otra para la producción.
produccion <- read_csv(
  "Producci_n_de_Frutales_en_el_departamento_del_valle_del_cauca_del_a_o_2000_al_2018.csv"
) %>%
  rename(
    Year = año,
tricos = Citricos,
    Guanábana = `Guana bana`,
    `Melón A` = `Melón a`,
    `Melón B` = `Melon b`
  ) %>%
  filter(Year != "año") %>%
  mutate(across(
    .cols = c(Year:Vid),
    .fns = ~ str_replace_all(
      string = .x,
      pattern = ",",
      replacement = "."
    )
  )) %>% 
  mutate(across(c(Year:Vid), as.numeric)) %>% 
  pivot_longer(cols = -c(Municipios, Year),
               names_to = "Cultivo",
               values_to = "produccion")

produccion
  • Otra forma de llegar al mismo resultado anterior se muestra a continuación:
# Invertir pasos
read_csv(
  "Producci_n_de_Frutales_en_el_departamento_del_valle_del_cauca_del_a_o_2000_al_2018.csv"
) %>%
  rename(
    Year = año,
tricos = Citricos,
    Guanábana = `Guana bana`,
    `Melón A` = `Melón a`,
    `Melón B` = `Melon b`
  ) %>%
  filter(Year != "año") %>% 
  pivot_longer(cols = -c(Municipios, Year),
               names_to = "Cultivo",
               values_to = "produccion") %>% 
  mutate(Year = as.numeric(Year),
         produccion = str_replace_all(string = produccion, pattern = ",",
                                      replacement = "."),
         produccion = as.numeric(produccion))

2.4 Rendimiento

  • Importar datos
  • Editar nombres de algunas variables
  • Conversión de formato ancho a formato largo. Esto lo hacemos con la finalidad de tener una variable para el cultivo y otra para el rendimiento.
rendimiento <- read_csv("Rendimiento_de_Superficie_Sembrada_con_Frutales_en_el_Departamento_del_Valle_del_Cauca.csv") %>% 
  rename(
    Year = año,
tricos = Citricos,
    Guanábana = `Guana bana`,
    `Melón A` = `Melón a`,
    `Melón B` = `Melon b`
  ) %>% 
  pivot_longer(cols = -c(Municipios, Year),
               names_to = "Cultivo",
               values_to = "rendimiento")

rendimiento

2.5 Unión de datos

  • Vamos a unir las cuatro bases de datos a través de la función inner_join() del paquete dplyr. Nota: podemos unir sólo dos bases de datos en una misma función.
frutales <- inner_join(x = area_sembrada, y = area_cosechada,
           by = c("Municipios", "Year", "Cultivo")) %>% 
  inner_join(y = produccion, by = c("Municipios", "Year", "Cultivo")) %>% 
  inner_join(y = rendimiento, by = c("Municipios", "Year", "Cultivo"))

frutales

3 Ejemplo caudal río Chinchiná

  • Importar datos
  • (opcional) Limpiar los nombres de las variables
  • Filtrar filas que son un resultado (total, promedio, mínimo, máximo) y no una observación.
  • Conversión de formato ancho a largo. Este proceso lo realizamos para tener en una columna el mes y en otra el caudal.
  • Crear un nueva columna con información del año.
  • Añadir un punto (“.”) a la columa mes. Esto lo hacemos con la finalidad de garantizar que el formato sea compatible con la tipificación de fechas en R. Ejemplo: “ene.”
  • Unir las columnas “year”, “mes” y “dia” en una sola de nombre “fecha”. Con formato Date en R.
  • Conversión al formato Date de la variable fecha, a través de la función ymd().
  • Nota: para reordenar las columnas se puede utilizar la función relocate() del paquete dplyr. El uso de la función auxiliar everything() es de gran utilidad junto a relocate(). Ejemplo: relocate(year, everything())
library(tidyverse)
library(janitor)
library(lubridate) # manejo de fechas

datos_caudal <- read_csv("Caudal_Rio_Chinchina_2016.csv") %>% 
  clean_names() %>% 
  slice(1:31) %>% 
  pivot_longer(cols = -dia, names_to = "mes", values_to = "caudal") %>% 
  mutate(year = "2016",
         mes = str_c(mes, ".")) %>% 
  unite(year, mes, dia, sep = "-", col = "fecha") %>% 
  mutate(fecha = ymd(fecha))

datos_caudal  

4 Gráficos ejemplo

4.1 graphics

plot(x = datos_caudal$fecha, y = datos_caudal$caudal)

4.2 ggplot2

datos_caudal %>% 
  ggplot(mapping = aes(x = fecha, y = caudal)) +
  geom_line()

5 Manipulación de fechas

ejemplo <- "2020-01-01"
ejemplo_fecha <- ymd(ejemplo)

class(ejemplo)
## [1] "character"
class(ejemplo_fecha)
## [1] "Date"
weekdays(ejemplo_fecha)
## [1] "miércoles"
week(ejemplo_fecha)
## [1] 1
month(ejemplo_fecha, label = TRUE, abbr = FALSE)
## [1] enero
## 12 Levels: enero < febrero < marzo < abril < mayo < junio < ... < diciembre
day(ejemplo_fecha)
## [1] 1
year(ejemplo_fecha)
## [1] 2020
# Error
ejemplo2 <- "2016-ene.-1"
ymd(ejemplo2)
## [1] "2016-01-01"
str_c("ene", ".")
## [1] "ene."