library(tidyverse)
library(readxl)
library(janitor)
library(DT)
library(rvest)
library(lubridate)clean_data_wikipedia_update.Rclean_variables_string.Rdata_final.Rsource("../functions-R/clean_data_wikipedia_update.R", encoding = "UTF-8")
source("../functions-R/clean_variable_string.R", encoding = "UTF-8")
source("../functions-R/data_final.R", encoding = "UTF-8")url <- "https://es.wikipedia.org/wiki/Anexo:Sondeos_de_intenci%C3%B3n_de_voto_para_las_elecciones_presidenciales_de_Colombia_de_2022"
web_info <- url %>%
read_html()
web_info## {html_document}
## <html class="client-nojs" lang="es" dir="ltr">
## [1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8 ...
## [2] <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-104 ns-subjec ...
web_info %>%
html_node("body")## {html_node}
## <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-104 ns-subject mw-editable page-Anexo_Sondeos_de_intención_de_voto_para_las_elecciones_presidenciales_de_Colombia_de_2022 rootpage-Anexo_Sondeos_de_intención_de_voto_para_las_elecciones_presidenciales_de_Colombia_de_2022 skin-vector action-view skin-vector-legacy">
## [1] <div id="mw-page-base" class="noprint"></div>
## [2] <div id="mw-head-base" class="noprint"></div>
## [3] <div id="content" class="mw-body" role="main">\n\t<a id="top"></a>\n\t<di ...
## [4] <div id="mw-navigation">\n\t<h2>Menú de navegación</h2>\n\t<div id="mw-he ...
## [5] <footer id="footer" class="mw-footer" role="contentinfo"><ul id="footer-i ...
## [6] <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgPageParseR ...
web_info %>%
html_node("body") %>%
html_table()data.frame, pero como no todas las tablas tienen la misma
estructura sería más fácil de manipular si se extraen de manera
individual y luego se busca la manera correcta de unirlas. Este proceso
lo estructura a través de tres funciones:
clean_data_wikipedia_update(): esta
función permite unificar los nombres de las variables y las etiquetas
(nombres) del candidato. Este proceso es necesario porque no todos los
candidatos fueron evaluados en todas las encuestas (diferente número de
variables en cada tabla) y porque no se les asignó el mismo nombre en
cada encuesta (etiquetas diferente para el candidato).clean_variable_string(): esta función
permite eliminar el signo “%” y reemplazar la coma (“,”) por el punto
(“.”), para después coercionar las variables a tipo numérico.data_final: esta función permite leer
múltiples tablas (encuestas) desde un objeto de clase
xml_document (obtenido con la función
read_html() del paqueete rvest),
unirlas y realizar la depuración final para tener un solo
dataframe para análisis. Esta función consume las dos funciones
anteriores.data_encuestas <-
web_info %>%
data_final(x = .)
data_encuestaswrite_csv(x = data_encuestas, file = "../data/EncuestasColombia2022-Update.csv")