library(tidyverse)
library(readxl)
library(janitor)
library(DT)
library(rvest)
library(lubridate)
clean_data_wikipedia_update.R
clean_variables_string.R
data_final.R
source("../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")
<- "https://es.wikipedia.org/wiki/Anexo:Sondeos_de_intenci%C3%B3n_de_voto_para_las_elecciones_presidenciales_de_Colombia_de_2022"
url
<- url %>%
web_info 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_encuestas
write_csv(x = data_encuestas, file = "../data/EncuestasColombia2022-Update.csv")