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.
Importando datos
library(readxl)
encuesta_mal <- read_excel("encuesta.xlsx")
encuesta_mal
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> …
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
Exportando datos
csv por comas
write_csv(encuesta_bien, "encuesta_bien.csv")
Excel
library(writexl)
write_xlsx(encuesta_bien, "encuesta_bien_excel.xlsx")
Ejemplo frutales
- Objetivo: unir bases de datos de área sembrada, área cosechada, producción y rendimiento de frutales en el Valle del Cauca.
Á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`,
Cítricos = Citricos) %>%
pivot_longer(cols = -c(Municipios, Year),
names_to = "Cultivo",
values_to = "area_sembrada")
area_sembrada
Á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,
Cí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
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,
Cí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,
Cí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))
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,
Cí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
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
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
Gráficos ejemplo
graphics
plot(x = datos_caudal$fecha, y = datos_caudal$caudal)

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

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