• 1 Ejemplo encuesta
    • 1.1 Importando datos
    • 1.2 Tipificación de datos
    • 1.3 Depuración
    • 1.4 Exportando datos
      • 1.4.1 csv por comas
      • 1.4.2 Excel
  • 2 Ejemplo frutales
    • 2.1 Área sembrada
    • 2.2 Área cosechada
    • 2.3 Producción
    • 2.4 Rendimiento
    • 2.5 Unión de datos
  • 3 Ejemplo caudal río Chinchiná
  • 4 Gráficos ejemplo
    • 4.1 graphics
    • 4.2 ggplot2
  • 5 Manipulación de fechas

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
ABCDEFGHIJ0123456789
Marca temporal
<dttm>
1. ¿Cuál es su promedio académico actual?
<chr>
2021-03-19 12:10:503.53
2021-03-19 12:16:323.8
2021-03-19 12:21:454.02
2021-03-19 12:26:284.39
2021-03-19 12:35:053.99
2021-03-19 12:47:103.8
2021-03-19 12:48:213.83
2021-03-19 12:55:223.8
2021-03-19 12:56:283.8
2021-03-19 13:04:403.88

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
ABCDEFGHIJ0123456789
promedio_academico
<dbl>
color_favorito
<chr>
horas_estudiar
<dbl>
horas_dormir
<dbl>
redes_sociales
<dbl>
3.53Verde307.04
3.80Amarillo126.09
4.02Rojo456.03
4.39Negro606.02
3.99Azul508.09
3.80Vino tinto252.05
3.83Rosado282.02
3.80Negro406.04
3.80Negro406.04
3.88Azul367.05

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
ABCDEFGHIJ0123456789
Municipios
<chr>
Year
<dbl>
Cultivo
<chr>
area_sembrada
<dbl>
Cali2018Aguacate5.0
Cali2018Bananito0.0
Cali2018Banano0.0
Cali2018Borojó0.0
Cali2018Chontaduro0.0
Cali2018Cítricos28.0
Cali2018Coco0.0
Cali2018Granadilla0.0
Cali2018Guanábana0.0
Cali2018Lulo0.0

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
ABCDEFGHIJ0123456789
Municipios
<chr>
Year
<dbl>
Cultivo
<chr>
area_cosechada
<dbl>
Cali2018Aguacate5.0
Cali2018Bananito0.0
Cali2018Banano0.0
Cali2018Borojó0.0
Cali2018Chontaduro0.0
Cali2018Cítricos28.0
Cali2018Coco0.0
Cali2018Granadilla0.0
Cali2018Guanábana0.0
Cali2018Guayaba12.0

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
ABCDEFGHIJ0123456789
Municipios
<chr>
Year
<dbl>
Cultivo
<chr>
produccion
<dbl>
Cali2018Aguacate20.000
Cali2018Bananito0.000
Cali2018Banano0.000
Cali2018Borojó0.000
Cali2018Chontaduro0.000
Cali2018Cítricos224.000
Cali2018Coco0.000
Cali2018Granadilla0.000
Cali2018Guanábana0.000
Cali2018Guayaba108.000
  • 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))
ABCDEFGHIJ0123456789
Municipios
<chr>
Year
<dbl>
Cultivo
<chr>
produccion
<dbl>
Cali2018Aguacate20.000
Cali2018Bananito0.000
Cali2018Banano0.000
Cali2018Borojó0.000
Cali2018Chontaduro0.000
Cali2018Cítricos224.000
Cali2018Coco0.000
Cali2018Granadilla0.000
Cali2018Guanábana0.000
Cali2018Guayaba108.000

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
ABCDEFGHIJ0123456789
Municipios
<chr>
Year
<dbl>
Cultivo
<chr>
rendimiento
<dbl>
Dagua2010Aguacate7.00
Dagua2010Bananito11.00
Dagua2010BananoNA
Dagua2010BorojóNA
Dagua2010Chontaduro13.00
Dagua2010Cítricos7.00
Dagua2010CocoNA
Dagua2010GranadillaNA
Dagua2010GuanábanaNA
Dagua2010GuayabaNA

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
ABCDEFGHIJ0123456789
Municipios
<chr>
Year
<dbl>
Cultivo
<chr>
area_sembrada
<dbl>
area_cosechada
<dbl>
produccion
<dbl>
Cali2018Aguacate5.05.020.000
Cali2018Bananito0.00.00.000
Cali2018Banano0.00.00.000
Cali2018Borojó0.00.00.000
Cali2018Chontaduro0.00.00.000
Cali2018Cítricos28.028.0224.000
Cali2018Coco0.00.00.000
Cali2018Granadilla0.00.00.000
Cali2018Guanábana0.00.00.000
Cali2018Lulo0.00.00.000

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  
ABCDEFGHIJ0123456789
fecha
<date>
caudal
<dbl>
2016-01-01499.600
2016-02-01441.700
2016-03-01500.200
2016-04-01615.800
2016-05-011020.300
2016-06-011020.300
2016-07-01904.700
2016-08-01962.500
2016-09-011932.100
2016-10-011479.800

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