library(tidyverse)
## Warning: package 'tibble' was built under R version 4.5.3
## Warning: package 'readr' was built under R version 4.5.3
## Warning: package 'purrr' was built under R version 4.5.3
## Warning: package 'dplyr' was built under R version 4.5.3
## Warning: package 'stringr' was built under R version 4.5.3
## Warning: package 'lubridate' was built under R version 4.5.3
## āā Attaching core tidyverse packages āāāāāāāāāāāāāāāāāāāāāāāā tidyverse 2.0.0 āā
## ā dplyr 1.2.0 ā readr 2.2.0
## ā forcats 1.0.0 ā stringr 1.6.0
## ā ggplot2 3.5.2 ā tibble 3.3.1
## ā lubridate 1.9.5 ā tidyr 1.3.1
## ā purrr 1.2.1
## āā Conflicts āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā tidyverse_conflicts() āā
## ā dplyr::filter() masks stats::filter()
## ā dplyr::lag() masks stats::lag()
## ā¹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(rvest)
## Warning: package 'rvest' was built under R version 4.5.3
##
## Adjuntando el paquete: 'rvest'
##
## The following object is masked from 'package:readr':
##
## guess_encoding
library(tidytext)
## Warning: package 'tidytext' was built under R version 4.5.3
library(stringr)
library(pdftools)
## Warning: package 'pdftools' was built under R version 4.5.3
## Using poppler version 26.01.0
library(readr)
getwd()
## [1] "C:/Users/rmall/Desktop/MAGA/base de datos r"
list.files()
## [1] "avance-empĆrico.html"
## [2] "avance-empĆrico.Rmd"
## [3] "avance empĆrico.Rmd"
## [4] "base de datos r.Rproj"
## [5] "corpus_maga_final.csv"
## [6] "corpus_maga_final_ampliado.csv"
## [7] "corpus_maga_final_con_obama.csv"
## [8] "corpus_trump_2015_2016.csv"
## [9] "correlaciones_importantes_trump.csv"
## [10] "docs_trump_2015_2016_raw.csv"
## [11] "gop.pdf"
## [12] "matriz_categorias_con_obama.csv"
## [13] "resultados_categorias_con_obama.csv"
## [14] "resultados_categorias_periodo.csv"
## [15] "resultados_frases_clave.csv"
## [16] "resultados_frases_clave_con_obama.csv"
## [17] "rsconnect"
## [18] "tabla_categorias_normalizadas.csv"
gop_paginas <- pdf_text("gop.pdf")
gop_texto <- paste(gop_paginas, collapse = "\n")
gop_texto <- str_replace_all(gop_texto, "\\s+", " ")
str_sub(gop_texto, 1, 500)
## [1] " Growth & Opportunity Project Growth & Opportunity Project 1 Growth & Opportunity Project Table of contents 1 Introduction 43 Friends and Allies (Third Party Groups) 1. Competitive Primaries 2. TV Spending Growth and Opportunity Project 3. Technology: Organize or Lose 2 By The Numbers 4. \aSilence Is Not Always Golden; Public Sharing of Information Is Good Messaging 5. Polling 3 1. \aSome People Say, āRepublicans Donāt Careā 6. \aDivision of Labor and the Need for RNC Leadership 2. America Looks Di"
corpus_maga <- tibble(
id = "gop_2013",
periodo = "2008-2015",
actor = "Republican National Committee",
tipo_fuente = "documento_partidario",
titulo = "Growth and Opportunity Project",
texto = gop_texto
)
View(corpus_maga)
library(tidyverse)
library(rvest)
library(stringr)
base_url <- "https://www.presidency.ucsb.edu/advanced-search?field-keywords=&field-keywords2=&field-keywords3=&from%5Bdate%5D=01-01-2015&to%5Bdate%5D=01-01-2017&person2=200301&items_per_page=100"
# 1012 resultados / 100 por pagina = aprox. 11 paginas
paginas_busqueda <- paste0(base_url, "&page=", 0:10)
extraer_links <- function(url_pagina) {
pagina <- read_html(url_pagina)
nodos <- pagina %>%
html_elements("a[href^='/documents/']")
tibble(
titulo_busqueda = html_text2(nodos),
href = html_attr(nodos, "href")
) %>%
filter(!is.na(href)) %>%
mutate(
url = paste0("https://www.presidency.ucsb.edu", href)
) %>%
distinct(url, .keep_all = TRUE)
}
links_trump <- map_dfr(
paginas_busqueda,
extraer_links,
.id = "pagina_resultados"
) %>%
mutate(pagina_resultados = as.integer(pagina_resultados) - 1) %>%
distinct(url, .keep_all = TRUE)
View(links_trump)
nrow(links_trump)
## [1] 1014
links_trump_limpios <- links_trump %>%
filter(!str_detect(titulo_busqueda, "Guidebook|Category Attributes"))
View(links_trump_limpios)
nrow(links_trump_limpios)
## [1] 1012
leer_documento_app <- function(url_doc) {
Sys.sleep(0.3)
tryCatch({
pagina <- read_html(url_doc)
titulo_doc <- pagina %>%
html_element("h1") %>%
html_text2()
texto_doc <- pagina %>%
html_elements(".field-docs-content p") %>%
html_text2()
if (length(texto_doc) == 0) {
texto_doc <- pagina %>%
html_elements("p") %>%
html_text2()
}
texto_doc <- paste(texto_doc, collapse = " ") %>%
str_squish()
tibble(
url = url_doc,
titulo_doc = titulo_doc,
texto = texto_doc,
error = NA_character_
)
}, error = function(e) {
tibble(
url = url_doc,
titulo_doc = NA_character_,
texto = NA_character_,
error = as.character(e$message)
)
})
}
prueba_trump <- map_dfr(
links_trump_limpios$url[1:5],
leer_documento_app
)
View(prueba_trump)
prueba_trump %>%
select(titulo_doc, texto) %>%
head()
## # A tibble: 5 Ć 2
## titulo_doc texto
## <chr> <chr>
## 1 "Tweets of June 15, 2015" "Aboā¦
## 2 "Tweets of June 16, 2015" "Aboā¦
## 3 "Trump Campaign Press Release - Donald Trump: Obama Is A Horrible Negot⦠"Theā¦
## 4 "Trump Campaign Press Release - Trump on Hillary: I Was Watching Her Ta⦠"Theā¦
## 5 "Trump Campaign Press Release - Donald J. Trump Declares Candidacy for ⦠"(Neā¦
docs_trump <- map_dfr(seq_along(links_trump_limpios$url), function(i) {
message("Descargando documento ", i, " de ", length(links_trump_limpios$url))
leer_documento_app(links_trump_limpios$url[i])
})
## Descargando documento 1 de 1012
## Descargando documento 2 de 1012
## Descargando documento 3 de 1012
## Descargando documento 4 de 1012
## Descargando documento 5 de 1012
## Descargando documento 6 de 1012
## Descargando documento 7 de 1012
## Descargando documento 8 de 1012
## Descargando documento 9 de 1012
## Descargando documento 10 de 1012
## Descargando documento 11 de 1012
## Descargando documento 12 de 1012
## Descargando documento 13 de 1012
## Descargando documento 14 de 1012
## Descargando documento 15 de 1012
## Descargando documento 16 de 1012
## Descargando documento 17 de 1012
## Descargando documento 18 de 1012
## Descargando documento 19 de 1012
## Descargando documento 20 de 1012
## Descargando documento 21 de 1012
## Descargando documento 22 de 1012
## Descargando documento 23 de 1012
## Descargando documento 24 de 1012
## Descargando documento 25 de 1012
## Descargando documento 26 de 1012
## Descargando documento 27 de 1012
## Descargando documento 28 de 1012
## Descargando documento 29 de 1012
## Descargando documento 30 de 1012
## Descargando documento 31 de 1012
## Descargando documento 32 de 1012
## Descargando documento 33 de 1012
## Descargando documento 34 de 1012
## Descargando documento 35 de 1012
## Descargando documento 36 de 1012
## Descargando documento 37 de 1012
## Descargando documento 38 de 1012
## Descargando documento 39 de 1012
## Descargando documento 40 de 1012
## Descargando documento 41 de 1012
## Descargando documento 42 de 1012
## Descargando documento 43 de 1012
## Descargando documento 44 de 1012
## Descargando documento 45 de 1012
## Descargando documento 46 de 1012
## Descargando documento 47 de 1012
## Descargando documento 48 de 1012
## Descargando documento 49 de 1012
## Descargando documento 50 de 1012
## Descargando documento 51 de 1012
## Descargando documento 52 de 1012
## Descargando documento 53 de 1012
## Descargando documento 54 de 1012
## Descargando documento 55 de 1012
## Descargando documento 56 de 1012
## Descargando documento 57 de 1012
## Descargando documento 58 de 1012
## Descargando documento 59 de 1012
## Descargando documento 60 de 1012
## Descargando documento 61 de 1012
## Descargando documento 62 de 1012
## Descargando documento 63 de 1012
## Descargando documento 64 de 1012
## Descargando documento 65 de 1012
## Descargando documento 66 de 1012
## Descargando documento 67 de 1012
## Descargando documento 68 de 1012
## Descargando documento 69 de 1012
## Descargando documento 70 de 1012
## Descargando documento 71 de 1012
## Descargando documento 72 de 1012
## Descargando documento 73 de 1012
## Descargando documento 74 de 1012
## Descargando documento 75 de 1012
## Descargando documento 76 de 1012
## Descargando documento 77 de 1012
## Descargando documento 78 de 1012
## Descargando documento 79 de 1012
## Descargando documento 80 de 1012
## Descargando documento 81 de 1012
## Descargando documento 82 de 1012
## Descargando documento 83 de 1012
## Descargando documento 84 de 1012
## Descargando documento 85 de 1012
## Descargando documento 86 de 1012
## Descargando documento 87 de 1012
## Descargando documento 88 de 1012
## Descargando documento 89 de 1012
## Descargando documento 90 de 1012
## Descargando documento 91 de 1012
## Descargando documento 92 de 1012
## Descargando documento 93 de 1012
## Descargando documento 94 de 1012
## Descargando documento 95 de 1012
## Descargando documento 96 de 1012
## Descargando documento 97 de 1012
## Descargando documento 98 de 1012
## Descargando documento 99 de 1012
## Descargando documento 100 de 1012
## Descargando documento 101 de 1012
## Descargando documento 102 de 1012
## Descargando documento 103 de 1012
## Descargando documento 104 de 1012
## Descargando documento 105 de 1012
## Descargando documento 106 de 1012
## Descargando documento 107 de 1012
## Descargando documento 108 de 1012
## Descargando documento 109 de 1012
## Descargando documento 110 de 1012
## Descargando documento 111 de 1012
## Descargando documento 112 de 1012
## Descargando documento 113 de 1012
## Descargando documento 114 de 1012
## Descargando documento 115 de 1012
## Descargando documento 116 de 1012
## Descargando documento 117 de 1012
## Descargando documento 118 de 1012
## Descargando documento 119 de 1012
## Descargando documento 120 de 1012
## Descargando documento 121 de 1012
## Descargando documento 122 de 1012
## Descargando documento 123 de 1012
## Descargando documento 124 de 1012
## Descargando documento 125 de 1012
## Descargando documento 126 de 1012
## Descargando documento 127 de 1012
## Descargando documento 128 de 1012
## Descargando documento 129 de 1012
## Descargando documento 130 de 1012
## Descargando documento 131 de 1012
## Descargando documento 132 de 1012
## Descargando documento 133 de 1012
## Descargando documento 134 de 1012
## Descargando documento 135 de 1012
## Descargando documento 136 de 1012
## Descargando documento 137 de 1012
## Descargando documento 138 de 1012
## Descargando documento 139 de 1012
## Descargando documento 140 de 1012
## Descargando documento 141 de 1012
## Descargando documento 142 de 1012
## Descargando documento 143 de 1012
## Descargando documento 144 de 1012
## Descargando documento 145 de 1012
## Descargando documento 146 de 1012
## Descargando documento 147 de 1012
## Descargando documento 148 de 1012
## Descargando documento 149 de 1012
## Descargando documento 150 de 1012
## Descargando documento 151 de 1012
## Descargando documento 152 de 1012
## Descargando documento 153 de 1012
## Descargando documento 154 de 1012
## Descargando documento 155 de 1012
## Descargando documento 156 de 1012
## Descargando documento 157 de 1012
## Descargando documento 158 de 1012
## Descargando documento 159 de 1012
## Descargando documento 160 de 1012
## Descargando documento 161 de 1012
## Descargando documento 162 de 1012
## Descargando documento 163 de 1012
## Descargando documento 164 de 1012
## Descargando documento 165 de 1012
## Descargando documento 166 de 1012
## Descargando documento 167 de 1012
## Descargando documento 168 de 1012
## Descargando documento 169 de 1012
## Descargando documento 170 de 1012
## Descargando documento 171 de 1012
## Descargando documento 172 de 1012
## Descargando documento 173 de 1012
## Descargando documento 174 de 1012
## Descargando documento 175 de 1012
## Descargando documento 176 de 1012
## Descargando documento 177 de 1012
## Descargando documento 178 de 1012
## Descargando documento 179 de 1012
## Descargando documento 180 de 1012
## Descargando documento 181 de 1012
## Descargando documento 182 de 1012
## Descargando documento 183 de 1012
## Descargando documento 184 de 1012
## Descargando documento 185 de 1012
## Descargando documento 186 de 1012
## Descargando documento 187 de 1012
## Descargando documento 188 de 1012
## Descargando documento 189 de 1012
## Descargando documento 190 de 1012
## Descargando documento 191 de 1012
## Descargando documento 192 de 1012
## Descargando documento 193 de 1012
## Descargando documento 194 de 1012
## Descargando documento 195 de 1012
## Descargando documento 196 de 1012
## Descargando documento 197 de 1012
## Descargando documento 198 de 1012
## Descargando documento 199 de 1012
## Descargando documento 200 de 1012
## Descargando documento 201 de 1012
## Descargando documento 202 de 1012
## Descargando documento 203 de 1012
## Descargando documento 204 de 1012
## Descargando documento 205 de 1012
## Descargando documento 206 de 1012
## Descargando documento 207 de 1012
## Descargando documento 208 de 1012
## Descargando documento 209 de 1012
## Descargando documento 210 de 1012
## Descargando documento 211 de 1012
## Descargando documento 212 de 1012
## Descargando documento 213 de 1012
## Descargando documento 214 de 1012
## Descargando documento 215 de 1012
## Descargando documento 216 de 1012
## Descargando documento 217 de 1012
## Descargando documento 218 de 1012
## Descargando documento 219 de 1012
## Descargando documento 220 de 1012
## Descargando documento 221 de 1012
## Descargando documento 222 de 1012
## Descargando documento 223 de 1012
## Descargando documento 224 de 1012
## Descargando documento 225 de 1012
## Descargando documento 226 de 1012
## Descargando documento 227 de 1012
## Descargando documento 228 de 1012
## Descargando documento 229 de 1012
## Descargando documento 230 de 1012
## Descargando documento 231 de 1012
## Descargando documento 232 de 1012
## Descargando documento 233 de 1012
## Descargando documento 234 de 1012
## Descargando documento 235 de 1012
## Descargando documento 236 de 1012
## Descargando documento 237 de 1012
## Descargando documento 238 de 1012
## Descargando documento 239 de 1012
## Descargando documento 240 de 1012
## Descargando documento 241 de 1012
## Descargando documento 242 de 1012
## Descargando documento 243 de 1012
## Descargando documento 244 de 1012
## Descargando documento 245 de 1012
## Descargando documento 246 de 1012
## Descargando documento 247 de 1012
## Descargando documento 248 de 1012
## Descargando documento 249 de 1012
## Descargando documento 250 de 1012
## Descargando documento 251 de 1012
## Descargando documento 252 de 1012
## Descargando documento 253 de 1012
## Descargando documento 254 de 1012
## Descargando documento 255 de 1012
## Descargando documento 256 de 1012
## Descargando documento 257 de 1012
## Descargando documento 258 de 1012
## Descargando documento 259 de 1012
## Descargando documento 260 de 1012
## Descargando documento 261 de 1012
## Descargando documento 262 de 1012
## Descargando documento 263 de 1012
## Descargando documento 264 de 1012
## Descargando documento 265 de 1012
## Descargando documento 266 de 1012
## Descargando documento 267 de 1012
## Descargando documento 268 de 1012
## Descargando documento 269 de 1012
## Descargando documento 270 de 1012
## Descargando documento 271 de 1012
## Descargando documento 272 de 1012
## Descargando documento 273 de 1012
## Descargando documento 274 de 1012
## Descargando documento 275 de 1012
## Descargando documento 276 de 1012
## Descargando documento 277 de 1012
## Descargando documento 278 de 1012
## Descargando documento 279 de 1012
## Descargando documento 280 de 1012
## Descargando documento 281 de 1012
## Descargando documento 282 de 1012
## Descargando documento 283 de 1012
## Descargando documento 284 de 1012
## Descargando documento 285 de 1012
## Descargando documento 286 de 1012
## Descargando documento 287 de 1012
## Descargando documento 288 de 1012
## Descargando documento 289 de 1012
## Descargando documento 290 de 1012
## Descargando documento 291 de 1012
## Descargando documento 292 de 1012
## Descargando documento 293 de 1012
## Descargando documento 294 de 1012
## Descargando documento 295 de 1012
## Descargando documento 296 de 1012
## Descargando documento 297 de 1012
## Descargando documento 298 de 1012
## Descargando documento 299 de 1012
## Descargando documento 300 de 1012
## Descargando documento 301 de 1012
## Descargando documento 302 de 1012
## Descargando documento 303 de 1012
## Descargando documento 304 de 1012
## Descargando documento 305 de 1012
## Descargando documento 306 de 1012
## Descargando documento 307 de 1012
## Descargando documento 308 de 1012
## Descargando documento 309 de 1012
## Descargando documento 310 de 1012
## Descargando documento 311 de 1012
## Descargando documento 312 de 1012
## Descargando documento 313 de 1012
## Descargando documento 314 de 1012
## Descargando documento 315 de 1012
## Descargando documento 316 de 1012
## Descargando documento 317 de 1012
## Descargando documento 318 de 1012
## Descargando documento 319 de 1012
## Descargando documento 320 de 1012
## Descargando documento 321 de 1012
## Descargando documento 322 de 1012
## Descargando documento 323 de 1012
## Descargando documento 324 de 1012
## Descargando documento 325 de 1012
## Descargando documento 326 de 1012
## Descargando documento 327 de 1012
## Descargando documento 328 de 1012
## Descargando documento 329 de 1012
## Descargando documento 330 de 1012
## Descargando documento 331 de 1012
## Descargando documento 332 de 1012
## Descargando documento 333 de 1012
## Descargando documento 334 de 1012
## Descargando documento 335 de 1012
## Descargando documento 336 de 1012
## Descargando documento 337 de 1012
## Descargando documento 338 de 1012
## Descargando documento 339 de 1012
## Descargando documento 340 de 1012
## Descargando documento 341 de 1012
## Descargando documento 342 de 1012
## Descargando documento 343 de 1012
## Descargando documento 344 de 1012
## Descargando documento 345 de 1012
## Descargando documento 346 de 1012
## Descargando documento 347 de 1012
## Descargando documento 348 de 1012
## Descargando documento 349 de 1012
## Descargando documento 350 de 1012
## Descargando documento 351 de 1012
## Descargando documento 352 de 1012
## Descargando documento 353 de 1012
## Descargando documento 354 de 1012
## Descargando documento 355 de 1012
## Descargando documento 356 de 1012
## Descargando documento 357 de 1012
## Descargando documento 358 de 1012
## Descargando documento 359 de 1012
## Descargando documento 360 de 1012
## Descargando documento 361 de 1012
## Descargando documento 362 de 1012
## Descargando documento 363 de 1012
## Descargando documento 364 de 1012
## Descargando documento 365 de 1012
## Descargando documento 366 de 1012
## Descargando documento 367 de 1012
## Descargando documento 368 de 1012
## Descargando documento 369 de 1012
## Descargando documento 370 de 1012
## Descargando documento 371 de 1012
## Descargando documento 372 de 1012
## Descargando documento 373 de 1012
## Descargando documento 374 de 1012
## Descargando documento 375 de 1012
## Descargando documento 376 de 1012
## Descargando documento 377 de 1012
## Descargando documento 378 de 1012
## Descargando documento 379 de 1012
## Descargando documento 380 de 1012
## Descargando documento 381 de 1012
## Descargando documento 382 de 1012
## Descargando documento 383 de 1012
## Descargando documento 384 de 1012
## Descargando documento 385 de 1012
## Descargando documento 386 de 1012
## Descargando documento 387 de 1012
## Descargando documento 388 de 1012
## Descargando documento 389 de 1012
## Descargando documento 390 de 1012
## Descargando documento 391 de 1012
## Descargando documento 392 de 1012
## Descargando documento 393 de 1012
## Descargando documento 394 de 1012
## Descargando documento 395 de 1012
## Descargando documento 396 de 1012
## Descargando documento 397 de 1012
## Descargando documento 398 de 1012
## Descargando documento 399 de 1012
## Descargando documento 400 de 1012
## Descargando documento 401 de 1012
## Descargando documento 402 de 1012
## Descargando documento 403 de 1012
## Descargando documento 404 de 1012
## Descargando documento 405 de 1012
## Descargando documento 406 de 1012
## Descargando documento 407 de 1012
## Descargando documento 408 de 1012
## Descargando documento 409 de 1012
## Descargando documento 410 de 1012
## Descargando documento 411 de 1012
## Descargando documento 412 de 1012
## Descargando documento 413 de 1012
## Descargando documento 414 de 1012
## Descargando documento 415 de 1012
## Descargando documento 416 de 1012
## Descargando documento 417 de 1012
## Descargando documento 418 de 1012
## Descargando documento 419 de 1012
## Descargando documento 420 de 1012
## Descargando documento 421 de 1012
## Descargando documento 422 de 1012
## Descargando documento 423 de 1012
## Descargando documento 424 de 1012
## Descargando documento 425 de 1012
## Descargando documento 426 de 1012
## Descargando documento 427 de 1012
## Descargando documento 428 de 1012
## Descargando documento 429 de 1012
## Descargando documento 430 de 1012
## Descargando documento 431 de 1012
## Descargando documento 432 de 1012
## Descargando documento 433 de 1012
## Descargando documento 434 de 1012
## Descargando documento 435 de 1012
## Descargando documento 436 de 1012
## Descargando documento 437 de 1012
## Descargando documento 438 de 1012
## Descargando documento 439 de 1012
## Descargando documento 440 de 1012
## Descargando documento 441 de 1012
## Descargando documento 442 de 1012
## Descargando documento 443 de 1012
## Descargando documento 444 de 1012
## Descargando documento 445 de 1012
## Descargando documento 446 de 1012
## Descargando documento 447 de 1012
## Descargando documento 448 de 1012
## Descargando documento 449 de 1012
## Descargando documento 450 de 1012
## Descargando documento 451 de 1012
## Descargando documento 452 de 1012
## Descargando documento 453 de 1012
## Descargando documento 454 de 1012
## Descargando documento 455 de 1012
## Descargando documento 456 de 1012
## Descargando documento 457 de 1012
## Descargando documento 458 de 1012
## Descargando documento 459 de 1012
## Descargando documento 460 de 1012
## Descargando documento 461 de 1012
## Descargando documento 462 de 1012
## Descargando documento 463 de 1012
## Descargando documento 464 de 1012
## Descargando documento 465 de 1012
## Descargando documento 466 de 1012
## Descargando documento 467 de 1012
## Descargando documento 468 de 1012
## Descargando documento 469 de 1012
## Descargando documento 470 de 1012
## Descargando documento 471 de 1012
## Descargando documento 472 de 1012
## Descargando documento 473 de 1012
## Descargando documento 474 de 1012
## Descargando documento 475 de 1012
## Descargando documento 476 de 1012
## Descargando documento 477 de 1012
## Descargando documento 478 de 1012
## Descargando documento 479 de 1012
## Descargando documento 480 de 1012
## Descargando documento 481 de 1012
## Descargando documento 482 de 1012
## Descargando documento 483 de 1012
## Descargando documento 484 de 1012
## Descargando documento 485 de 1012
## Descargando documento 486 de 1012
## Descargando documento 487 de 1012
## Descargando documento 488 de 1012
## Descargando documento 489 de 1012
## Descargando documento 490 de 1012
## Descargando documento 491 de 1012
## Descargando documento 492 de 1012
## Descargando documento 493 de 1012
## Descargando documento 494 de 1012
## Descargando documento 495 de 1012
## Descargando documento 496 de 1012
## Descargando documento 497 de 1012
## Descargando documento 498 de 1012
## Descargando documento 499 de 1012
## Descargando documento 500 de 1012
## Descargando documento 501 de 1012
## Descargando documento 502 de 1012
## Descargando documento 503 de 1012
## Descargando documento 504 de 1012
## Descargando documento 505 de 1012
## Descargando documento 506 de 1012
## Descargando documento 507 de 1012
## Descargando documento 508 de 1012
## Descargando documento 509 de 1012
## Descargando documento 510 de 1012
## Descargando documento 511 de 1012
## Descargando documento 512 de 1012
## Descargando documento 513 de 1012
## Descargando documento 514 de 1012
## Descargando documento 515 de 1012
## Descargando documento 516 de 1012
## Descargando documento 517 de 1012
## Descargando documento 518 de 1012
## Descargando documento 519 de 1012
## Descargando documento 520 de 1012
## Descargando documento 521 de 1012
## Descargando documento 522 de 1012
## Descargando documento 523 de 1012
## Descargando documento 524 de 1012
## Descargando documento 525 de 1012
## Descargando documento 526 de 1012
## Descargando documento 527 de 1012
## Descargando documento 528 de 1012
## Descargando documento 529 de 1012
## Descargando documento 530 de 1012
## Descargando documento 531 de 1012
## Descargando documento 532 de 1012
## Descargando documento 533 de 1012
## Descargando documento 534 de 1012
## Descargando documento 535 de 1012
## Descargando documento 536 de 1012
## Descargando documento 537 de 1012
## Descargando documento 538 de 1012
## Descargando documento 539 de 1012
## Descargando documento 540 de 1012
## Descargando documento 541 de 1012
## Descargando documento 542 de 1012
## Descargando documento 543 de 1012
## Descargando documento 544 de 1012
## Descargando documento 545 de 1012
## Descargando documento 546 de 1012
## Descargando documento 547 de 1012
## Descargando documento 548 de 1012
## Descargando documento 549 de 1012
## Descargando documento 550 de 1012
## Descargando documento 551 de 1012
## Descargando documento 552 de 1012
## Descargando documento 553 de 1012
## Descargando documento 554 de 1012
## Descargando documento 555 de 1012
## Descargando documento 556 de 1012
## Descargando documento 557 de 1012
## Descargando documento 558 de 1012
## Descargando documento 559 de 1012
## Descargando documento 560 de 1012
## Descargando documento 561 de 1012
## Descargando documento 562 de 1012
## Descargando documento 563 de 1012
## Descargando documento 564 de 1012
## Descargando documento 565 de 1012
## Descargando documento 566 de 1012
## Descargando documento 567 de 1012
## Descargando documento 568 de 1012
## Descargando documento 569 de 1012
## Descargando documento 570 de 1012
## Descargando documento 571 de 1012
## Descargando documento 572 de 1012
## Descargando documento 573 de 1012
## Descargando documento 574 de 1012
## Descargando documento 575 de 1012
## Descargando documento 576 de 1012
## Descargando documento 577 de 1012
## Descargando documento 578 de 1012
## Descargando documento 579 de 1012
## Descargando documento 580 de 1012
## Descargando documento 581 de 1012
## Descargando documento 582 de 1012
## Descargando documento 583 de 1012
## Descargando documento 584 de 1012
## Descargando documento 585 de 1012
## Descargando documento 586 de 1012
## Descargando documento 587 de 1012
## Descargando documento 588 de 1012
## Descargando documento 589 de 1012
## Descargando documento 590 de 1012
## Descargando documento 591 de 1012
## Descargando documento 592 de 1012
## Descargando documento 593 de 1012
## Descargando documento 594 de 1012
## Descargando documento 595 de 1012
## Descargando documento 596 de 1012
## Descargando documento 597 de 1012
## Descargando documento 598 de 1012
## Descargando documento 599 de 1012
## Descargando documento 600 de 1012
## Descargando documento 601 de 1012
## Descargando documento 602 de 1012
## Descargando documento 603 de 1012
## Descargando documento 604 de 1012
## Descargando documento 605 de 1012
## Descargando documento 606 de 1012
## Descargando documento 607 de 1012
## Descargando documento 608 de 1012
## Descargando documento 609 de 1012
## Descargando documento 610 de 1012
## Descargando documento 611 de 1012
## Descargando documento 612 de 1012
## Descargando documento 613 de 1012
## Descargando documento 614 de 1012
## Descargando documento 615 de 1012
## Descargando documento 616 de 1012
## Descargando documento 617 de 1012
## Descargando documento 618 de 1012
## Descargando documento 619 de 1012
## Descargando documento 620 de 1012
## Descargando documento 621 de 1012
## Descargando documento 622 de 1012
## Descargando documento 623 de 1012
## Descargando documento 624 de 1012
## Descargando documento 625 de 1012
## Descargando documento 626 de 1012
## Descargando documento 627 de 1012
## Descargando documento 628 de 1012
## Descargando documento 629 de 1012
## Descargando documento 630 de 1012
## Descargando documento 631 de 1012
## Descargando documento 632 de 1012
## Descargando documento 633 de 1012
## Descargando documento 634 de 1012
## Descargando documento 635 de 1012
## Descargando documento 636 de 1012
## Descargando documento 637 de 1012
## Descargando documento 638 de 1012
## Descargando documento 639 de 1012
## Descargando documento 640 de 1012
## Descargando documento 641 de 1012
## Descargando documento 642 de 1012
## Descargando documento 643 de 1012
## Descargando documento 644 de 1012
## Descargando documento 645 de 1012
## Descargando documento 646 de 1012
## Descargando documento 647 de 1012
## Descargando documento 648 de 1012
## Descargando documento 649 de 1012
## Descargando documento 650 de 1012
## Descargando documento 651 de 1012
## Descargando documento 652 de 1012
## Descargando documento 653 de 1012
## Descargando documento 654 de 1012
## Descargando documento 655 de 1012
## Descargando documento 656 de 1012
## Descargando documento 657 de 1012
## Descargando documento 658 de 1012
## Descargando documento 659 de 1012
## Descargando documento 660 de 1012
## Descargando documento 661 de 1012
## Descargando documento 662 de 1012
## Descargando documento 663 de 1012
## Descargando documento 664 de 1012
## Descargando documento 665 de 1012
## Descargando documento 666 de 1012
## Descargando documento 667 de 1012
## Descargando documento 668 de 1012
## Descargando documento 669 de 1012
## Descargando documento 670 de 1012
## Descargando documento 671 de 1012
## Descargando documento 672 de 1012
## Descargando documento 673 de 1012
## Descargando documento 674 de 1012
## Descargando documento 675 de 1012
## Descargando documento 676 de 1012
## Descargando documento 677 de 1012
## Descargando documento 678 de 1012
## Descargando documento 679 de 1012
## Descargando documento 680 de 1012
## Descargando documento 681 de 1012
## Descargando documento 682 de 1012
## Descargando documento 683 de 1012
## Descargando documento 684 de 1012
## Descargando documento 685 de 1012
## Descargando documento 686 de 1012
## Descargando documento 687 de 1012
## Descargando documento 688 de 1012
## Descargando documento 689 de 1012
## Descargando documento 690 de 1012
## Descargando documento 691 de 1012
## Descargando documento 692 de 1012
## Descargando documento 693 de 1012
## Descargando documento 694 de 1012
## Descargando documento 695 de 1012
## Descargando documento 696 de 1012
## Descargando documento 697 de 1012
## Descargando documento 698 de 1012
## Descargando documento 699 de 1012
## Descargando documento 700 de 1012
## Descargando documento 701 de 1012
## Descargando documento 702 de 1012
## Descargando documento 703 de 1012
## Descargando documento 704 de 1012
## Descargando documento 705 de 1012
## Descargando documento 706 de 1012
## Descargando documento 707 de 1012
## Descargando documento 708 de 1012
## Descargando documento 709 de 1012
## Descargando documento 710 de 1012
## Descargando documento 711 de 1012
## Descargando documento 712 de 1012
## Descargando documento 713 de 1012
## Descargando documento 714 de 1012
## Descargando documento 715 de 1012
## Descargando documento 716 de 1012
## Descargando documento 717 de 1012
## Descargando documento 718 de 1012
## Descargando documento 719 de 1012
## Descargando documento 720 de 1012
## Descargando documento 721 de 1012
## Descargando documento 722 de 1012
## Descargando documento 723 de 1012
## Descargando documento 724 de 1012
## Descargando documento 725 de 1012
## Descargando documento 726 de 1012
## Descargando documento 727 de 1012
## Descargando documento 728 de 1012
## Descargando documento 729 de 1012
## Descargando documento 730 de 1012
## Descargando documento 731 de 1012
## Descargando documento 732 de 1012
## Descargando documento 733 de 1012
## Descargando documento 734 de 1012
## Descargando documento 735 de 1012
## Descargando documento 736 de 1012
## Descargando documento 737 de 1012
## Descargando documento 738 de 1012
## Descargando documento 739 de 1012
## Descargando documento 740 de 1012
## Descargando documento 741 de 1012
## Descargando documento 742 de 1012
## Descargando documento 743 de 1012
## Descargando documento 744 de 1012
## Descargando documento 745 de 1012
## Descargando documento 746 de 1012
## Descargando documento 747 de 1012
## Descargando documento 748 de 1012
## Descargando documento 749 de 1012
## Descargando documento 750 de 1012
## Descargando documento 751 de 1012
## Descargando documento 752 de 1012
## Descargando documento 753 de 1012
## Descargando documento 754 de 1012
## Descargando documento 755 de 1012
## Descargando documento 756 de 1012
## Descargando documento 757 de 1012
## Descargando documento 758 de 1012
## Descargando documento 759 de 1012
## Descargando documento 760 de 1012
## Descargando documento 761 de 1012
## Descargando documento 762 de 1012
## Descargando documento 763 de 1012
## Descargando documento 764 de 1012
## Descargando documento 765 de 1012
## Descargando documento 766 de 1012
## Descargando documento 767 de 1012
## Descargando documento 768 de 1012
## Descargando documento 769 de 1012
## Descargando documento 770 de 1012
## Descargando documento 771 de 1012
## Descargando documento 772 de 1012
## Descargando documento 773 de 1012
## Descargando documento 774 de 1012
## Descargando documento 775 de 1012
## Descargando documento 776 de 1012
## Descargando documento 777 de 1012
## Descargando documento 778 de 1012
## Descargando documento 779 de 1012
## Descargando documento 780 de 1012
## Descargando documento 781 de 1012
## Descargando documento 782 de 1012
## Descargando documento 783 de 1012
## Descargando documento 784 de 1012
## Descargando documento 785 de 1012
## Descargando documento 786 de 1012
## Descargando documento 787 de 1012
## Descargando documento 788 de 1012
## Descargando documento 789 de 1012
## Descargando documento 790 de 1012
## Descargando documento 791 de 1012
## Descargando documento 792 de 1012
## Descargando documento 793 de 1012
## Descargando documento 794 de 1012
## Descargando documento 795 de 1012
## Descargando documento 796 de 1012
## Descargando documento 797 de 1012
## Descargando documento 798 de 1012
## Descargando documento 799 de 1012
## Descargando documento 800 de 1012
## Descargando documento 801 de 1012
## Descargando documento 802 de 1012
## Descargando documento 803 de 1012
## Descargando documento 804 de 1012
## Descargando documento 805 de 1012
## Descargando documento 806 de 1012
## Descargando documento 807 de 1012
## Descargando documento 808 de 1012
## Descargando documento 809 de 1012
## Descargando documento 810 de 1012
## Descargando documento 811 de 1012
## Descargando documento 812 de 1012
## Descargando documento 813 de 1012
## Descargando documento 814 de 1012
## Descargando documento 815 de 1012
## Descargando documento 816 de 1012
## Descargando documento 817 de 1012
## Descargando documento 818 de 1012
## Descargando documento 819 de 1012
## Descargando documento 820 de 1012
## Descargando documento 821 de 1012
## Descargando documento 822 de 1012
## Descargando documento 823 de 1012
## Descargando documento 824 de 1012
## Descargando documento 825 de 1012
## Descargando documento 826 de 1012
## Descargando documento 827 de 1012
## Descargando documento 828 de 1012
## Descargando documento 829 de 1012
## Descargando documento 830 de 1012
## Descargando documento 831 de 1012
## Descargando documento 832 de 1012
## Descargando documento 833 de 1012
## Descargando documento 834 de 1012
## Descargando documento 835 de 1012
## Descargando documento 836 de 1012
## Descargando documento 837 de 1012
## Descargando documento 838 de 1012
## Descargando documento 839 de 1012
## Descargando documento 840 de 1012
## Descargando documento 841 de 1012
## Descargando documento 842 de 1012
## Descargando documento 843 de 1012
## Descargando documento 844 de 1012
## Descargando documento 845 de 1012
## Descargando documento 846 de 1012
## Descargando documento 847 de 1012
## Descargando documento 848 de 1012
## Descargando documento 849 de 1012
## Descargando documento 850 de 1012
## Descargando documento 851 de 1012
## Descargando documento 852 de 1012
## Descargando documento 853 de 1012
## Descargando documento 854 de 1012
## Descargando documento 855 de 1012
## Descargando documento 856 de 1012
## Descargando documento 857 de 1012
## Descargando documento 858 de 1012
## Descargando documento 859 de 1012
## Descargando documento 860 de 1012
## Descargando documento 861 de 1012
## Descargando documento 862 de 1012
## Descargando documento 863 de 1012
## Descargando documento 864 de 1012
## Descargando documento 865 de 1012
## Descargando documento 866 de 1012
## Descargando documento 867 de 1012
## Descargando documento 868 de 1012
## Descargando documento 869 de 1012
## Descargando documento 870 de 1012
## Descargando documento 871 de 1012
## Descargando documento 872 de 1012
## Descargando documento 873 de 1012
## Descargando documento 874 de 1012
## Descargando documento 875 de 1012
## Descargando documento 876 de 1012
## Descargando documento 877 de 1012
## Descargando documento 878 de 1012
## Descargando documento 879 de 1012
## Descargando documento 880 de 1012
## Descargando documento 881 de 1012
## Descargando documento 882 de 1012
## Descargando documento 883 de 1012
## Descargando documento 884 de 1012
## Descargando documento 885 de 1012
## Descargando documento 886 de 1012
## Descargando documento 887 de 1012
## Descargando documento 888 de 1012
## Descargando documento 889 de 1012
## Descargando documento 890 de 1012
## Descargando documento 891 de 1012
## Descargando documento 892 de 1012
## Descargando documento 893 de 1012
## Descargando documento 894 de 1012
## Descargando documento 895 de 1012
## Descargando documento 896 de 1012
## Descargando documento 897 de 1012
## Descargando documento 898 de 1012
## Descargando documento 899 de 1012
## Descargando documento 900 de 1012
## Descargando documento 901 de 1012
## Descargando documento 902 de 1012
## Descargando documento 903 de 1012
## Descargando documento 904 de 1012
## Descargando documento 905 de 1012
## Descargando documento 906 de 1012
## Descargando documento 907 de 1012
## Descargando documento 908 de 1012
## Descargando documento 909 de 1012
## Descargando documento 910 de 1012
## Descargando documento 911 de 1012
## Descargando documento 912 de 1012
## Descargando documento 913 de 1012
## Descargando documento 914 de 1012
## Descargando documento 915 de 1012
## Descargando documento 916 de 1012
## Descargando documento 917 de 1012
## Descargando documento 918 de 1012
## Descargando documento 919 de 1012
## Descargando documento 920 de 1012
## Descargando documento 921 de 1012
## Descargando documento 922 de 1012
## Descargando documento 923 de 1012
## Descargando documento 924 de 1012
## Descargando documento 925 de 1012
## Descargando documento 926 de 1012
## Descargando documento 927 de 1012
## Descargando documento 928 de 1012
## Descargando documento 929 de 1012
## Descargando documento 930 de 1012
## Descargando documento 931 de 1012
## Descargando documento 932 de 1012
## Descargando documento 933 de 1012
## Descargando documento 934 de 1012
## Descargando documento 935 de 1012
## Descargando documento 936 de 1012
## Descargando documento 937 de 1012
## Descargando documento 938 de 1012
## Descargando documento 939 de 1012
## Descargando documento 940 de 1012
## Descargando documento 941 de 1012
## Descargando documento 942 de 1012
## Descargando documento 943 de 1012
## Descargando documento 944 de 1012
## Descargando documento 945 de 1012
## Descargando documento 946 de 1012
## Descargando documento 947 de 1012
## Descargando documento 948 de 1012
## Descargando documento 949 de 1012
## Descargando documento 950 de 1012
## Descargando documento 951 de 1012
## Descargando documento 952 de 1012
## Descargando documento 953 de 1012
## Descargando documento 954 de 1012
## Descargando documento 955 de 1012
## Descargando documento 956 de 1012
## Descargando documento 957 de 1012
## Descargando documento 958 de 1012
## Descargando documento 959 de 1012
## Descargando documento 960 de 1012
## Descargando documento 961 de 1012
## Descargando documento 962 de 1012
## Descargando documento 963 de 1012
## Descargando documento 964 de 1012
## Descargando documento 965 de 1012
## Descargando documento 966 de 1012
## Descargando documento 967 de 1012
## Descargando documento 968 de 1012
## Descargando documento 969 de 1012
## Descargando documento 970 de 1012
## Descargando documento 971 de 1012
## Descargando documento 972 de 1012
## Descargando documento 973 de 1012
## Descargando documento 974 de 1012
## Descargando documento 975 de 1012
## Descargando documento 976 de 1012
## Descargando documento 977 de 1012
## Descargando documento 978 de 1012
## Descargando documento 979 de 1012
## Descargando documento 980 de 1012
## Descargando documento 981 de 1012
## Descargando documento 982 de 1012
## Descargando documento 983 de 1012
## Descargando documento 984 de 1012
## Descargando documento 985 de 1012
## Descargando documento 986 de 1012
## Descargando documento 987 de 1012
## Descargando documento 988 de 1012
## Descargando documento 989 de 1012
## Descargando documento 990 de 1012
## Descargando documento 991 de 1012
## Descargando documento 992 de 1012
## Descargando documento 993 de 1012
## Descargando documento 994 de 1012
## Descargando documento 995 de 1012
## Descargando documento 996 de 1012
## Descargando documento 997 de 1012
## Descargando documento 998 de 1012
## Descargando documento 999 de 1012
## Descargando documento 1000 de 1012
## Descargando documento 1001 de 1012
## Descargando documento 1002 de 1012
## Descargando documento 1003 de 1012
## Descargando documento 1004 de 1012
## Descargando documento 1005 de 1012
## Descargando documento 1006 de 1012
## Descargando documento 1007 de 1012
## Descargando documento 1008 de 1012
## Descargando documento 1009 de 1012
## Descargando documento 1010 de 1012
## Descargando documento 1011 de 1012
## Descargando documento 1012 de 1012
View(docs_trump)
write_csv(docs_trump, "docs_trump_2015_2016_raw.csv")
corpus_trump <- docs_trump %>%
left_join(
links_trump_limpios %>% select(url, titulo_busqueda, pagina_resultados),
by = "url"
) %>%
mutate(
id = paste0("trump_", row_number()),
periodo = "2015-2016",
actor = "Donald Trump",
tipo_fuente = "American Presidency Project",
titulo = if_else(
is.na(titulo_doc) | titulo_doc == "",
titulo_busqueda,
titulo_doc
)
) %>%
select(id, periodo, actor, tipo_fuente, titulo, texto, url, error)
View(corpus_trump)
write_csv(corpus_trump, "corpus_trump_2015_2016.csv")
corpus_gop <- tibble(
id = "gop_2013",
periodo = "2008-2015",
actor = "Republican National Committee",
tipo_fuente = "documento_partidario",
titulo = "Growth and Opportunity Project",
texto = gop_texto,
url = "gop.pdf",
error = NA_character_
)
corpus_maga <- bind_rows(corpus_gop, corpus_trump)
View(corpus_maga)
write_csv(corpus_maga, "corpus_maga_final.csv")
corpus_maga %>%
count(periodo, actor)
## # A tibble: 2 Ć 3
## periodo actor n
## <chr> <chr> <int>
## 1 2008-2015 Republican National Committee 1
## 2 2015-2016 Donald Trump 1012
urls_previas <- tribble(
~id, ~periodo, ~actor, ~tipo_fuente, ~url,
"mccain_2008_aceptacion",
"2008-2015",
"John McCain",
"discurso_convencion",
"https://www.presidency.ucsb.edu/documents/address-accepting-the-presidential-nomination-the-republican-national-convention-saint",
"romney_2012_aceptacion",
"2008-2015",
"Mitt Romney",
"discurso_convencion",
"https://www.presidency.ucsb.edu/documents/address-accepting-the-presidential-nomination-the-republican-national-convention-tampa",
"gop_platform_2008",
"2008-2015",
"Republican Party",
"plataforma_partidaria",
"https://www.presidency.ucsb.edu/documents/2008-republican-party-platform",
"gop_platform_2012",
"2008-2015",
"Republican Party",
"plataforma_partidaria",
"https://www.presidency.ucsb.edu/documents/2012-republican-party-platform"
)
leer_documento_app <- function(url_doc) {
Sys.sleep(0.3)
tryCatch({
pagina <- read_html(url_doc)
titulo_doc <- pagina %>%
html_element("h1") %>%
html_text2()
texto_doc <- pagina %>%
html_elements(".field-docs-content p") %>%
html_text2()
if (length(texto_doc) == 0) {
texto_doc <- pagina %>%
html_elements("p") %>%
html_text2()
}
texto_doc <- paste(texto_doc, collapse = " ") %>%
str_squish()
tibble(
url = url_doc,
titulo_doc = titulo_doc,
texto = texto_doc,
error = NA_character_
)
}, error = function(e) {
tibble(
url = url_doc,
titulo_doc = NA_character_,
texto = NA_character_,
error = as.character(e$message)
)
})
}
urls_previas <- tribble(
~id, ~periodo, ~actor, ~tipo_fuente, ~url,
"mccain_2008_aceptacion",
"2008-2015",
"John McCain",
"discurso_convencion",
"https://www.presidency.ucsb.edu/documents/address-accepting-the-presidential-nomination-the-republican-national-convention-saint",
"romney_2012_aceptacion",
"2008-2015",
"Mitt Romney",
"discurso_convencion",
"https://www.presidency.ucsb.edu/documents/address-accepting-the-presidential-nomination-the-republican-national-convention-tampa",
"gop_platform_2008",
"2008-2015",
"Republican Party",
"plataforma_partidaria",
"https://www.presidency.ucsb.edu/documents/2008-republican-party-platform",
"gop_platform_2012",
"2008-2015",
"Republican Party",
"plataforma_partidaria",
"https://www.presidency.ucsb.edu/documents/2012-republican-party-platform"
)
docs_previos <- map_dfr(
urls_previas$url,
leer_documento_app
)
corpus_previos <- urls_previas %>%
left_join(docs_previos, by = "url") %>%
mutate(
titulo = if_else(
is.na(titulo_doc) | titulo_doc == "",
id,
titulo_doc
)
) %>%
select(id, periodo, actor, tipo_fuente, titulo, texto, url, error)
View(corpus_previos)
corpus_previos %>%
mutate(cantidad_caracteres = str_length(texto)) %>%
select(id, actor, titulo, cantidad_caracteres, error)
## # A tibble: 4 Ć 5
## id actor titulo cantidad_caracteres error
## <chr> <chr> <chr> <int> <chr>
## 1 mccain_2008_aceptacion John McCain Address Acc⦠25296 <NA>
## 2 romney_2012_aceptacion Mitt Romney Address Acc⦠22519 <NA>
## 3 gop_platform_2008 Republican Party 2008 Republ⦠153265 <NA>
## 4 gop_platform_2012 Republican Party 2012 Republ⦠199648 <NA>
corpus_maga <- corpus_maga %>%
filter(!id %in% corpus_previos$id) %>%
bind_rows(corpus_previos)
corpus_maga %>%
count(periodo, actor)
## # A tibble: 5 Ć 3
## periodo actor n
## <chr> <chr> <int>
## 1 2008-2015 John McCain 1
## 2 2008-2015 Mitt Romney 1
## 3 2008-2015 Republican National Committee 1
## 4 2008-2015 Republican Party 2
## 5 2015-2016 Donald Trump 1012
write_csv(corpus_maga, "corpus_maga_final_ampliado.csv")
corpus_maga <- corpus_maga %>%
filter(!id %in% corpus_previos$id) %>%
bind_rows(corpus_previos)
data("stop_words")
stop_extra <- tibble(
word = c(
"donald", "trump", "republican", "republicans", "party",
"campaign", "press", "release", "president", "presidential",
"said", "says", "today", "mr", "watch", "download", "pdf",
"fox", "news", "cnn", "abc", "nbc", "cbs"
)
)
tokens <- corpus_maga %>%
mutate(texto = str_to_lower(texto)) %>%
unnest_tokens(word, texto) %>%
anti_join(stop_words, by = "word") %>%
anti_join(stop_extra, by = "word") %>%
filter(!str_detect(word, "^[0-9]+$")) %>%
filter(str_length(word) > 2)
tokens %>%
count(periodo, word, sort = TRUE) %>%
group_by(periodo) %>%
slice_max(n, n = 20)
## # A tibble: 40 Ć 3
## # Groups: periodo [2]
## periodo word n
## <chr> <chr> <int>
## 1 2008-2015 rnc 395
## 2 2008-2015 american 262
## 3 2008-2015 federal 248
## 4 2008-2015 government 243
## 5 2008-2015 support 235
## 6 2008-2015 parties 234
## 7 2008-2015 people 224
## 8 2008-2015 americans 196
## 9 2008-2015 national 194
## 10 2008-2015 data 193
## # ā¹ 30 more rows
diccionario <- tribble(
~categoria, ~word,
"moderacion_institucional", "inclusive",
"moderacion_institucional", "welcoming",
"moderacion_institucional", "diversity",
"moderacion_institucional", "minorities",
"moderacion_institucional", "hispanic",
"moderacion_institucional", "latino",
"moderacion_institucional", "outreach",
"moderacion_institucional", "respect",
"moderacion_institucional", "opportunity",
"moderacion_institucional", "tolerance",
"moderacion_institucional", "inclusion",
"decadencia_nacional", "weak",
"decadencia_nacional", "lost",
"decadencia_nacional", "disaster",
"decadencia_nacional", "broken",
"decadencia_nacional", "failing",
"decadencia_nacional", "decline",
"decadencia_nacional", "crisis",
"decadencia_nacional", "problem",
"decadencia_nacional", "threat",
"restauracion_nacional", "great",
"restauracion_nacional", "again",
"restauracion_nacional", "restore",
"restauracion_nacional", "rebuild",
"restauracion_nacional", "back",
"restauracion_nacional", "win",
"restauracion_nacional", "winning",
"restauracion_nacional", "strong",
"restauracion_nacional", "strength",
"amenaza_migratoria", "immigration",
"amenaza_migratoria", "immigrants",
"amenaza_migratoria", "illegal",
"amenaza_migratoria", "border",
"amenaza_migratoria", "wall",
"amenaza_migratoria", "mexico",
"amenaza_migratoria", "mexican",
"amenaza_migratoria", "criminals",
"amenaza_migratoria", "drugs",
"amenaza_migratoria", "crime",
"amenaza_migratoria", "deport",
"pueblo_vs_elite", "people",
"pueblo_vs_elite", "politicians",
"pueblo_vs_elite", "washington",
"pueblo_vs_elite", "establishment",
"pueblo_vs_elite", "elite",
"pueblo_vs_elite", "elites",
"pueblo_vs_elite", "media",
"pueblo_vs_elite", "donors",
"pueblo_vs_elite", "corrupt",
"pueblo_vs_elite", "lobbyists",
"descontento_economico", "jobs",
"descontento_economico", "workers",
"descontento_economico", "trade",
"descontento_economico", "china",
"descontento_economico", "factories",
"descontento_economico", "economy",
"descontento_economico", "wages",
"descontento_economico", "manufacturing"
)
conteo_categorias <- tokens %>%
inner_join(diccionario, by = "word") %>%
count(periodo, categoria, sort = TRUE)
total_palabras <- tokens %>%
count(periodo, name = "total_palabras")
conteo_normalizado <- conteo_categorias %>%
left_join(total_palabras, by = "periodo") %>%
mutate(frecuencia_por_1000 = n / total_palabras * 1000)
conteo_normalizado
## # A tibble: 12 Ć 5
## periodo categoria n total_palabras frecuencia_por_1000
## <chr> <chr> <int> <int> <dbl>
## 1 2015-2016 pueblo_vs_elite 2812 158805 17.7
## 2 2015-2016 descontento_economico 2625 158805 16.5
## 3 2015-2016 amenaza_migratoria 1685 158805 10.6
## 4 2015-2016 restauracion_nacional 866 158805 5.45
## 5 2015-2016 decadencia_nacional 550 158805 3.46
## 6 2008-2015 pueblo_vs_elite 445 47360 9.40
## 7 2008-2015 moderacion_institucional 402 47360 8.49
## 8 2015-2016 moderacion_institucional 342 158805 2.15
## 9 2008-2015 descontento_economico 298 47360 6.29
## 10 2008-2015 amenaza_migratoria 137 47360 2.89
## 11 2008-2015 restauracion_nacional 133 47360 2.81
## 12 2008-2015 decadencia_nacional 74 47360 1.56
ggplot(conteo_normalizado, aes(x = categoria, y = frecuencia_por_1000, fill = periodo)) +
geom_col(position = "dodge") +
coord_flip() +
labs(
title = "Comparación de categorĆas discursivas por periodo",
subtitle = "Frecuencia por cada 1000 palabras",
x = "CategorĆa",
y = "Frecuencia por 1000 palabras"
)

frases_clave <- corpus_maga %>%
mutate(
texto_min = str_to_lower(texto),
make_america_great_again = str_count(texto_min, "make america great again"),
maga = str_count(texto_min, "\\bmaga\\b"),
america_first = str_count(texto_min, "america first"),
build_the_wall = str_count(texto_min, "build the wall")
) %>%
group_by(periodo) %>%
summarise(
make_america_great_again = sum(make_america_great_again, na.rm = TRUE),
maga = sum(maga, na.rm = TRUE),
america_first = sum(america_first, na.rm = TRUE),
build_the_wall = sum(build_the_wall, na.rm = TRUE)
)
frases_clave
## # A tibble: 2 Ć 5
## periodo make_america_great_again maga america_first build_the_wall
## <chr> <int> <int> <int> <int>
## 1 2008-2015 0 0 0 0
## 2 2015-2016 202 0 98 13
write_csv(conteo_normalizado, "resultados_categorias_periodo.csv")
write_csv(frases_clave, "resultados_frases_clave.csv")
conteo_normalizado %>%
arrange(categoria, periodo)
## # A tibble: 12 Ć 5
## periodo categoria n total_palabras frecuencia_por_1000
## <chr> <chr> <int> <int> <dbl>
## 1 2008-2015 amenaza_migratoria 137 47360 2.89
## 2 2015-2016 amenaza_migratoria 1685 158805 10.6
## 3 2008-2015 decadencia_nacional 74 47360 1.56
## 4 2015-2016 decadencia_nacional 550 158805 3.46
## 5 2008-2015 descontento_economico 298 47360 6.29
## 6 2015-2016 descontento_economico 2625 158805 16.5
## 7 2008-2015 moderacion_institucional 402 47360 8.49
## 8 2015-2016 moderacion_institucional 342 158805 2.15
## 9 2008-2015 pueblo_vs_elite 445 47360 9.40
## 10 2015-2016 pueblo_vs_elite 2812 158805 17.7
## 11 2008-2015 restauracion_nacional 133 47360 2.81
## 12 2015-2016 restauracion_nacional 866 158805 5.45
write_csv(conteo_normalizado, "tabla_categorias_normalizadas.csv")
frases_clave <- corpus_maga %>%
mutate(
texto_min = str_to_lower(texto),
make_america_great_again = str_count(texto_min, "make america great again"),
maga = str_count(texto_min, "\\bmaga\\b"),
america_first = str_count(texto_min, "america first"),
build_the_wall = str_count(texto_min, "build the wall")
) %>%
group_by(periodo) %>%
summarise(
make_america_great_again = sum(make_america_great_again, na.rm = TRUE),
maga = sum(maga, na.rm = TRUE),
america_first = sum(america_first, na.rm = TRUE),
build_the_wall = sum(build_the_wall, na.rm = TRUE)
)
frases_clave
## # A tibble: 2 Ć 5
## periodo make_america_great_again maga america_first build_the_wall
## <chr> <int> <int> <int> <int>
## 1 2008-2015 0 0 0 0
## 2 2015-2016 202 0 98 13
corpus_maga %>%
filter(periodo == "2015-2016") %>%
filter(str_detect(str_to_lower(texto), "immigration|border|wall|mexico|illegal")) %>%
select(titulo, texto) %>%
head(10)
## # A tibble: 10 Ć 2
## titulo texto
## <chr> <chr>
## 1 Trump Campaign Press Release - Donald Trump: I Would Build a Great, Gr⦠"Theā¦
## 2 Remarks Announcing Candidacy for President in New York City "Truā¦
## 3 Trump Campaign Press Release - Donald Trump Speaks at Manchester Rally "WMUā¦
## 4 Trump Campaign Press Release - Trump on Mexico Comments: 'I Can't Apol⦠"Breā¦
## 5 Trump Campaign Press Release - O'Reilly: Obama Admin 'Complicit' in Mu⦠"Foxā¦
## 6 Trump Campaign Press Release - Coulter: Trump 'Speaking for Working Cl⦠"Breā¦
## 7 Trump Campaign Press Release - Trump Discusses Business and Politics w⦠"Foxā¦
## 8 Trump Campaign Press Release - Arizona Event - July 11, 2015 - Locatio⦠"Dowā¦
## 9 Statement by Donald J. Trump in Response to Hillary Clinton "Dowā¦
## 10 Trump Campaign Press Release - The Silent Majority Has Awakened! "Havā¦
corpus_maga %>%
filter(periodo == "2008-2015") %>%
filter(str_detect(str_to_lower(texto), "inclusive|welcoming|hispanic|minorities|outreach|respect")) %>%
select(actor, titulo, texto)
## # A tibble: 5 Ć 3
## actor titulo texto
## <chr> <chr> <chr>
## 1 Republican National Committee Growth and Opportunity Project " Grā¦
## 2 John McCain Address Accepting the Presidential Nomina⦠"Thaā¦
## 3 Mitt Romney Address Accepting the Presidential Nomina⦠"Mr.ā¦
## 4 Republican Party 2008 Republican Party Platform "Thiā¦
## 5 Republican Party 2012 Republican Party Platform "Thiā¦
conteo_doc_categoria <- tokens %>%
inner_join(diccionario, by = "word") %>%
count(periodo, id, actor, titulo, categoria, name = "n_categoria")
total_doc <- tokens %>%
count(periodo, id, actor, titulo, name = "total_palabras_doc")
dispersion_categorias <- conteo_doc_categoria %>%
left_join(total_doc, by = c("periodo", "id", "actor", "titulo")) %>%
mutate(frecuencia_por_1000 = n_categoria / total_palabras_doc * 1000)
dispersion_categorias
## # A tibble: 1,076 Ć 8
## periodo id actor titulo categoria n_categoria total_palabras_doc
## <chr> <chr> <chr> <chr> <chr> <int> <int>
## 1 2008-2015 gop_2013 Repu⦠Growt⦠amenaza_⦠18 17493
## 2 2008-2015 gop_2013 Repu⦠Growt⦠decadenc⦠12 17493
## 3 2008-2015 gop_2013 Repu⦠Growt⦠desconte⦠13 17493
## 4 2008-2015 gop_2013 Repu⦠Growt⦠moderaci⦠303 17493
## 5 2008-2015 gop_2013 Repu⦠Growt⦠pueblo_v⦠240 17493
## 6 2008-2015 gop_2013 Repu⦠Growt⦠restaura⦠62 17493
## 7 2008-2015 gop_platform⦠Repu⦠2008 ⦠amenaza_⦠63 11715
## 8 2008-2015 gop_platform⦠Repu⦠2008 ⦠decadenc⦠15 11715
## 9 2008-2015 gop_platform⦠Repu⦠2008 ⦠desconte⦠96 11715
## 10 2008-2015 gop_platform⦠Repu⦠2008 ⦠moderaci⦠43 11715
## # ā¹ 1,066 more rows
## # ā¹ 1 more variable: frecuencia_por_1000 <dbl>
ggplot(dispersion_categorias, aes(x = periodo, y = frecuencia_por_1000)) +
geom_boxplot() +
facet_wrap(~categoria, scales = "free_y") +
labs(
title = "Dispersión de categorĆas discursivas por documento",
subtitle = "Frecuencia por cada 1000 palabras",
x = "Periodo",
y = "Frecuencia por 1000 palabras"
)

frases_clave <- corpus_maga %>%
mutate(
texto_min = str_to_lower(texto),
make_america_great_again = str_count(texto_min, "make america great again"),
maga = str_count(texto_min, "\\bmaga\\b"),
america_first = str_count(texto_min, "america first"),
build_the_wall = str_count(texto_min, "build the wall")
) %>%
group_by(periodo) %>%
summarise(
make_america_great_again = sum(make_america_great_again, na.rm = TRUE),
maga = sum(maga, na.rm = TRUE),
america_first = sum(america_first, na.rm = TRUE),
build_the_wall = sum(build_the_wall, na.rm = TRUE)
)
frases_clave
## # A tibble: 2 Ć 5
## periodo make_america_great_again maga america_first build_the_wall
## <chr> <int> <int> <int> <int>
## 1 2008-2015 0 0 0 0
## 2 2015-2016 202 0 98 13
frases_clave_largo <- frases_clave %>%
pivot_longer(
cols = -periodo,
names_to = "frase",
values_to = "frecuencia"
)
ggplot(frases_clave_largo, aes(x = frase, y = frecuencia, fill = periodo)) +
geom_col(position = "dodge") +
coord_flip() +
labs(
title = "Frecuencia de frases clave asociadas al marco MAGA",
x = "Frase",
y = "Frecuencia"
)

tfidf_periodo <- tokens %>%
count(periodo, word, sort = TRUE) %>%
bind_tf_idf(word, periodo, n) %>%
arrange(desc(tf_idf))
top_tfidf <- tfidf_periodo %>%
group_by(periodo) %>%
slice_max(tf_idf, n = 20) %>%
ungroup()
top_tfidf
## # A tibble: 40 Ć 6
## periodo word n tf idf tf_idf
## <chr> <chr> <int> <dbl> <dbl> <dbl>
## 1 2008-2015 vendors 40 0.000845 0.693 0.000585
## 2 2008-2015 affirm 34 0.000718 0.693 0.000498
## 3 2008-2015 partyās 29 0.000612 0.693 0.000424
## 4 2008-2015 flexibility 21 0.000443 0.693 0.000307
## 5 2008-2015 apa 20 0.000422 0.693 0.000293
## 6 2008-2015 rslc 19 0.000401 0.693 0.000278
## 7 2008-2015 pension 17 0.000359 0.693 0.000249
## 8 2008-2015 recruitment 14 0.000296 0.693 0.000205
## 9 2008-2015 targeting 14 0.000296 0.693 0.000205
## 10 2008-2015 rncās 13 0.000274 0.693 0.000190
## # ā¹ 30 more rows
ggplot(top_tfidf, aes(x = reorder(word, tf_idf), y = tf_idf, fill = periodo)) +
geom_col(show.legend = FALSE) +
facet_wrap(~periodo, scales = "free") +
coord_flip() +
labs(
title = "Palabras mƔs distintivas por periodo",
x = "Palabra",
y = "TF-IDF"
)

library(tidyverse)
library(tidytext)
library(stringr)
oraciones <- corpus_maga %>%
unnest_tokens(oracion, texto, token = "sentences") %>%
mutate(oracion_min = str_to_lower(oracion))
buscar_oraciones <- function(patron, periodo_filtro = NULL) {
resultado <- oraciones %>%
filter(str_detect(oracion_min, patron))
if (!is.null(periodo_filtro)) {
resultado <- resultado %>%
filter(periodo == periodo_filtro)
}
resultado %>%
select(periodo, actor, titulo, oracion) %>%
head(20)
}
buscar_oraciones("immigration|illegal|border|wall|mexico", "2015-2016")
## # A tibble: 20 Ć 4
## periodo actor titulo oracion
## <chr> <chr> <chr> <chr>
## 1 2015-2016 Donald Trump Trump Campaign Press Release - Donald Trump: ⦠"\"i wā¦
## 2 2015-2016 Donald Trump Trump Campaign Press Release - Donald Trump: ⦠"and nā¦
## 3 2015-2016 Donald Trump Trump Campaign Press Release - Donald Trump: ⦠"i wilā¦
## 4 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"when ā¦
## 5 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"when ā¦
## 6 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"but iā¦
## 7 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"it's ā¦
## 8 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"they ā¦
## 9 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"i telā¦
## 10 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"and, ā¦
## 11 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"so meā¦
## 12 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"reporā¦
## 13 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"they'ā¦
## 14 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"now, ā¦
## 15 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"i undā¦
## 16 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"everyā¦
## 17 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"they'ā¦
## 18 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"presiā¦
## 19 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"and bā¦
## 20 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"but lā¦
buscar_oraciones("great again|make america great again|america first", "2015-2016")
## # A tibble: 20 Ć 4
## periodo actor titulo oracion
## <chr> <chr> <chr> <chr>
## 1 2015-2016 Donald Trump "Trump Campaign Press Release - Donald Trump:⦠"the gā¦
## 2 2015-2016 Donald Trump "Trump Campaign Press Release - Donald J. Tru⦠"togetā¦
## 3 2015-2016 Donald Trump "Trump Campaign Press Release - Donald Trump:⦠"the dā¦
## 4 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"they ā¦
## 5 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"we neā¦
## 6 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"it's ā¦
## 7 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"and yā¦
## 8 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"so laā¦
## 9 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"how aā¦
## 10 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"thereā¦
## 11 2015-2016 Donald Trump "Remarks Announcing Candidacy for President i⦠"trumpā¦
## 12 2015-2016 Donald Trump "Trump Campaign Press Release - Donald Trump'⦠"fox nā¦
## 13 2015-2016 Donald Trump "Trump Campaign Press Release - Donald J. Tru⦠"togetā¦
## 14 2015-2016 Donald Trump "Trump Campaign Press Release - Trump Discuss⦠"\"i wā¦
## 15 2015-2016 Donald Trump "Trump Campaign Press Release - Trump Discuss⦠"\"we ā¦
## 16 2015-2016 Donald Trump "Statement by Donald J. Trump on the Iran Agr⦠"we haā¦
## 17 2015-2016 Donald Trump "Trump Campaign Press Release - Donald J. Tru⦠"now iā¦
## 18 2015-2016 Donald Trump "Trump Campaign Press Release - Donald J. Tru⦠"as i ā¦
## 19 2015-2016 Donald Trump "Trump Campaign Press Release - Donald J. Tru⦠"trumpā¦
## 20 2015-2016 Donald Trump "Trump Campaign Press Release - The Silent Ma⦠"we wiā¦
buscar_oraciones("inclusive|welcoming|hispanic|minorities|outreach|respect", "2008-2015")
## # A tibble: 20 Ć 4
## periodo actor titulo oracion
## <chr> <chr> <chr> <chr>
## 1 2008-2015 Republican National Committee Growth and Opportunity Proje⦠hispanā¦
## 2 2008-2015 Republican National Committee Growth and Opportunity Proje⦠we conā¦
## 3 2008-2015 Republican National Committee Growth and Opportunity Proje⦠onwardā¦
## 4 2008-2015 Republican National Committee Growth and Opportunity Proje⦠young ā¦
## 5 2008-2015 Republican National Committee Growth and Opportunity Proje⦠we havā¦
## 6 2008-2015 Republican National Committee Growth and Opportunity Proje⦠our stā¦
## 7 2008-2015 Republican National Committee Growth and Opportunity Proje⦠we neeā¦
## 8 2008-2015 Republican National Committee Growth and Opportunity Proje⦠we havā¦
## 9 2008-2015 Republican National Committee Growth and Opportunity Proje⦠we neeā¦
## 10 2008-2015 Republican National Committee Growth and Opportunity Proje⦠hispanā¦
## 11 2008-2015 Republican National Committee Growth and Opportunity Proje⦠accordā¦
## 12 2008-2015 Republican National Committee Growth and Opportunity Proje⦠when hā¦
## 13 2008-2015 Republican National Committee Growth and Opportunity Proje⦠becausā¦
## 14 2008-2015 Republican National Committee Growth and Opportunity Proje⦠presidā¦
## 15 2008-2015 Republican National Committee Growth and Opportunity Proje⦠7 growā¦
## 16 2008-2015 Republican National Committee Growth and Opportunity Proje⦠it doeā¦
## 17 2008-2015 Republican National Committee Growth and Opportunity Proje⦠in theā¦
## 18 2008-2015 Republican National Committee Growth and Opportunity Proje⦠other ā¦
## 19 2008-2015 Republican National Committee Growth and Opportunity Proje⦠weāve ā¦
## 20 2008-2015 Republican National Committee Growth and Opportunity Proje⦠we areā¦
buscar_oraciones("washington|politicians|establishment|elite|corrupt", "2015-2016")
## # A tibble: 20 Ć 4
## periodo actor titulo oracion
## <chr> <chr> <chr> <chr>
## 1 2015-2016 Donald Trump Trump Campaign Press Release - Donald J. Trum⦠"trumpā¦
## 2 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"trumpā¦
## 3 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"trumpā¦
## 4 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"how sā¦
## 5 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"they ā¦
## 6 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"if itā¦
## 7 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"you kā¦
## 8 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"i'm rā¦
## 9 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"we haā¦
## 10 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"it's ā¦
## 11 2015-2016 Donald Trump Remarks Announcing Candidacy for President in⦠"we goā¦
## 12 2015-2016 Donald Trump Trump Campaign Press Release - Donald Trump S⦠"he saā¦
## 13 2015-2016 Donald Trump Trump Campaign Press Release - Donald J. Trum⦠"trumpā¦
## 14 2015-2016 Donald Trump Trump Campaign Press Release - Donald J. Trum⦠"lewanā¦
## 15 2015-2016 Donald Trump Trump Campaign Press Release - Donald J. Trum⦠"this ā¦
## 16 2015-2016 Donald Trump Trump Campaign Press Release - Donald Trump's⦠"when ā¦
## 17 2015-2016 Donald Trump Trump Campaign Press Release - Coulter: Trump⦠"they ā¦
## 18 2015-2016 Donald Trump Trump Campaign Press Release - Coulter: Trump⦠"marcoā¦
## 19 2015-2016 Donald Trump Trump Campaign Press Release - USA Today-Suff⦠"trumpā¦
## 20 2015-2016 Donald Trump Trump Campaign Press Release - The Silent Maj⦠"many ā¦
oraciones <- corpus_maga %>%
unnest_tokens(oracion, texto, token = "sentences") %>%
mutate(oracion_min = str_to_lower(oracion))
buscar_oraciones <- function(patron, periodo_filtro = NULL) {
resultado <- oraciones %>%
filter(str_detect(oracion_min, patron))
if (!is.null(periodo_filtro)) {
resultado <- resultado %>%
filter(periodo == periodo_filtro)
}
resultado %>%
select(periodo, actor, titulo, oracion) %>%
head(20)
}
categorias_por_doc <- tokens %>%
inner_join(diccionario, by = "word") %>%
count(id, periodo, actor, titulo, categoria, name = "n_categoria")
total_por_doc <- tokens %>%
count(id, periodo, actor, titulo, name = "total_palabras_doc")
categorias_por_doc <- categorias_por_doc %>%
left_join(total_por_doc, by = c("id", "periodo", "actor", "titulo")) %>%
mutate(frecuencia_por_1000 = n_categoria / total_palabras_doc * 1000)
categorias_por_doc
## # A tibble: 1,076 Ć 8
## id periodo actor titulo categoria n_categoria total_palabras_doc
## <chr> <chr> <chr> <chr> <chr> <int> <int>
## 1 gop_2013 2008-2⦠Repu⦠Growt⦠amenaza_⦠18 17493
## 2 gop_2013 2008-2⦠Repu⦠Growt⦠decadenc⦠12 17493
## 3 gop_2013 2008-2⦠Repu⦠Growt⦠desconte⦠13 17493
## 4 gop_2013 2008-2⦠Repu⦠Growt⦠moderaci⦠303 17493
## 5 gop_2013 2008-2⦠Repu⦠Growt⦠pueblo_v⦠240 17493
## 6 gop_2013 2008-2⦠Repu⦠Growt⦠restaura⦠62 17493
## 7 gop_platform_2⦠2008-2⦠Repu⦠2008 ⦠amenaza_⦠63 11715
## 8 gop_platform_2⦠2008-2⦠Repu⦠2008 ⦠decadenc⦠15 11715
## 9 gop_platform_2⦠2008-2⦠Repu⦠2008 ⦠desconte⦠96 11715
## 10 gop_platform_2⦠2008-2⦠Repu⦠2008 ⦠moderaci⦠43 11715
## # ā¹ 1,066 more rows
## # ā¹ 1 more variable: frecuencia_por_1000 <dbl>
matriz_categorias <- categorias_por_doc %>%
select(id, periodo, categoria, frecuencia_por_1000) %>%
pivot_wider(
names_from = categoria,
values_from = frecuencia_por_1000,
values_fill = 0
)
View(matriz_categorias)
matriz_trump <- matriz_categorias %>%
filter(periodo == "2015-2016") %>%
select(-id, -periodo)
correlacion_trump <- cor(
matriz_trump,
method = "spearman",
use = "pairwise.complete.obs"
)
correlacion_trump
## amenaza_migratoria decadencia_nacional
## amenaza_migratoria 1.00000000 0.3792647
## decadencia_nacional 0.37926467 1.0000000
## descontento_economico 0.47096577 0.3881054
## moderacion_institucional 0.13225940 0.1723067
## pueblo_vs_elite 0.22405102 0.1381223
## restauracion_nacional 0.08063423 0.1822031
## descontento_economico moderacion_institucional
## amenaza_migratoria 0.4709658 0.13225940
## decadencia_nacional 0.3881054 0.17230673
## descontento_economico 1.0000000 0.25828862
## moderacion_institucional 0.2582886 1.00000000
## pueblo_vs_elite 0.1250086 -0.06304633
## restauracion_nacional 0.1940046 0.15751235
## pueblo_vs_elite restauracion_nacional
## amenaza_migratoria 0.22405102 0.08063423
## decadencia_nacional 0.13812225 0.18220308
## descontento_economico 0.12500856 0.19400465
## moderacion_institucional -0.06304633 0.15751235
## pueblo_vs_elite 1.00000000 0.04792520
## restauracion_nacional 0.04792520 1.00000000
correlacion_larga <- as.data.frame(correlacion_trump) %>%
rownames_to_column("categoria_1") %>%
pivot_longer(
cols = -categoria_1,
names_to = "categoria_2",
values_to = "correlacion"
)
ggplot(correlacion_larga, aes(x = categoria_1, y = categoria_2, fill = correlacion)) +
geom_tile() +
geom_text(aes(label = round(correlacion, 2)), size = 3) +
labs(
title = "Correlación entre categorĆas discursivas en el corpus Trump 2015-2016",
subtitle = "Correlación de Spearman por documento",
x = "CategorĆa",
y = "CategorĆa",
fill = "Correlación"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

correlaciones_importantes <- correlacion_larga %>%
filter(categoria_1 != categoria_2) %>%
mutate(
par = map2_chr(categoria_1, categoria_2, ~ paste(sort(c(.x, .y)), collapse = " + "))
) %>%
distinct(par, .keep_all = TRUE) %>%
arrange(desc(correlacion))
correlaciones_importantes
## # A tibble: 15 Ć 4
## categoria_1 categoria_2 correlacion par
## <chr> <chr> <dbl> <chr>
## 1 amenaza_migratoria descontento_economico 0.471 amenaza_migratā¦
## 2 decadencia_nacional descontento_economico 0.388 decadencia_nacā¦
## 3 amenaza_migratoria decadencia_nacional 0.379 amenaza_migratā¦
## 4 descontento_economico moderacion_institucional 0.258 descontento_ecā¦
## 5 amenaza_migratoria pueblo_vs_elite 0.224 amenaza_migratā¦
## 6 descontento_economico restauracion_nacional 0.194 descontento_ecā¦
## 7 decadencia_nacional restauracion_nacional 0.182 decadencia_nacā¦
## 8 decadencia_nacional moderacion_institucional 0.172 decadencia_nacā¦
## 9 moderacion_institucional restauracion_nacional 0.158 moderacion_insā¦
## 10 decadencia_nacional pueblo_vs_elite 0.138 decadencia_nacā¦
## 11 amenaza_migratoria moderacion_institucional 0.132 amenaza_migratā¦
## 12 descontento_economico pueblo_vs_elite 0.125 descontento_ecā¦
## 13 amenaza_migratoria restauracion_nacional 0.0806 amenaza_migratā¦
## 14 pueblo_vs_elite restauracion_nacional 0.0479 pueblo_vs_elitā¦
## 15 moderacion_institucional pueblo_vs_elite -0.0630 moderacion_insā¦
write_csv(correlaciones_importantes, "correlaciones_importantes_trump.csv")
library(tidyverse)
library(rvest)
library(stringr)
base_url_obama <- "https://www.presidency.ucsb.edu/advanced-search?field-keywords=&field-keywords2=&field-keywords3=&from%5Bdate%5D=01-01-2008&to%5Bdate%5D=01-01-2015&person2=200300&category2%5B%5D=8&category2%5B%5D=46&category2%5B%5D=51&category2%5B%5D=45&category2%5B%5D=63&category2%5B%5D=65&category2%5B%5D=49&items_per_page=100"
paginas_obama <- paste0(base_url_obama, "&page=", 0:50)
extraer_links <- function(url_pagina) {
pagina <- read_html(url_pagina)
nodos <- pagina %>%
html_elements("a[href^='/documents/']")
tibble(
titulo_busqueda = html_text2(nodos),
href = html_attr(nodos, "href")
) %>%
filter(!is.na(href)) %>%
mutate(
url = paste0("https://www.presidency.ucsb.edu", href)
) %>%
distinct(url, .keep_all = TRUE)
}
links_obama <- map_dfr(
paginas_obama,
extraer_links,
.id = "pagina_resultados"
) %>%
mutate(pagina_resultados = as.integer(pagina_resultados) - 1) %>%
distinct(url, .keep_all = TRUE)
View(links_obama)
nrow(links_obama)
## [1] 3486
links_obama_limpios <- links_obama %>%
filter(!str_detect(titulo_busqueda, "Guidebook|Category Attributes"))
View(links_obama_limpios)
nrow(links_obama_limpios)
## [1] 3484
exists("links_obama")
## [1] TRUE
links_obama_limpios <- links_obama %>%
filter(!str_detect(titulo_busqueda, "Guidebook|Category Attributes"))
View(links_obama_limpios)
nrow(links_obama_limpios)
## [1] 3484
links_obama_utiles <- links_obama_limpios %>%
filter(str_detect(
str_to_lower(titulo_busqueda),
"immigration|economy|jobs|american dream|unity|inaugural|state of the union|acceptance|convention"
))
View(links_obama_utiles)
nrow(links_obama_utiles)
## [1] 125
links_obama_muestra <- links_obama_utiles %>%
slice_head(n = 125)
View(links_obama_muestra)
docs_obama <- map_dfr(
links_obama_muestra$url,
leer_documento_app
)
corpus_obama <- links_obama_muestra %>%
left_join(docs_obama, by = "url") %>%
mutate(
id = paste0("obama_", row_number()),
periodo = "2008-2015",
actor = "Barack Obama",
tipo_fuente = "American Presidency Project",
titulo = if_else(
is.na(titulo_doc) | titulo_doc == "",
titulo_busqueda,
titulo_doc
)
) %>%
select(id, periodo, actor, tipo_fuente, titulo, texto, url, error)
View(corpus_obama)
corpus_obama %>%
mutate(cantidad_caracteres = str_length(texto)) %>%
select(id, actor, titulo, cantidad_caracteres, error)
## # A tibble: 125 Ć 5
## id actor titulo cantidad_caracteres error
## <chr> <chr> <chr> <int> <chr>
## 1 obama_1 Barack Obama "Obama Campaign Press Releas⦠3102 <NA>
## 2 obama_2 Barack Obama "Obama Campaign Press Releas⦠3914 <NA>
## 3 obama_3 Barack Obama "Remarks on the Economy in G⦠10398 <NA>
## 4 obama_4 Barack Obama "Remarks in Washington, DC i⦠4510 <NA>
## 5 obama_5 Barack Obama "Remarks in El Dorado, Kansa⦠15263 <NA>
## 6 obama_6 Barack Obama "Obama Statement On New Jobs⦠973 <NA>
## 7 obama_7 Barack Obama "Obama Campaign Press Releas⦠3804 <NA>
## 8 obama_8 Barack Obama "Obama Campaign Press Releas⦠5006 <NA>
## 9 obama_9 Barack Obama "Obama Campaign Press Releas⦠3028 <NA>
## 10 obama_10 Barack Obama "Obama Statement on the Stat⦠3397 <NA>
## # ā¹ 115 more rows
corpus_maga <- corpus_maga %>%
filter(!id %in% corpus_obama$id) %>%
bind_rows(corpus_obama)
corpus_maga %>%
count(periodo, actor)
## # A tibble: 6 Ć 3
## periodo actor n
## <chr> <chr> <int>
## 1 2008-2015 Barack Obama 125
## 2 2008-2015 John McCain 1
## 3 2008-2015 Mitt Romney 1
## 4 2008-2015 Republican National Committee 1
## 5 2008-2015 Republican Party 2
## 6 2015-2016 Donald Trump 1012
write_csv(corpus_maga, "corpus_maga_final_con_obama.csv")
stop_extra <- tibble(
word = c(
"donald", "trump", "barack", "obama",
"republican", "republicans", "democratic", "democrats", "party",
"campaign", "press", "release", "president", "presidential",
"said", "says", "today", "mr", "watch", "download", "pdf",
"fox", "news", "cnn", "abc", "nbc", "cbs",
"www", "https", "presidency", "ucsb", "edu"
)
)
tokens <- corpus_maga %>%
mutate(texto = str_to_lower(texto)) %>%
unnest_tokens(word, texto) %>%
anti_join(tidytext::stop_words, by = "word") %>%
anti_join(stop_extra, by = "word") %>%
filter(!str_detect(word, "^[0-9]+$")) %>%
filter(str_length(word) > 2)
corpus_maga %>%
count(periodo, actor)
## # A tibble: 6 Ć 3
## periodo actor n
## <chr> <chr> <int>
## 1 2008-2015 Barack Obama 125
## 2 2008-2015 John McCain 1
## 3 2008-2015 Mitt Romney 1
## 4 2008-2015 Republican National Committee 1
## 5 2008-2015 Republican Party 2
## 6 2015-2016 Donald Trump 1012
conteo_categorias <- tokens %>%
inner_join(diccionario, by = "word") %>%
count(periodo, categoria, sort = TRUE)
total_palabras <- tokens %>%
count(periodo, name = "total_palabras")
conteo_normalizado <- conteo_categorias %>%
left_join(total_palabras, by = "periodo") %>%
mutate(frecuencia_por_1000 = n / total_palabras * 1000)
conteo_normalizado
## # A tibble: 12 Ć 5
## periodo categoria n total_palabras frecuencia_por_1000
## <chr> <chr> <int> <int> <dbl>
## 1 2015-2016 pueblo_vs_elite 2812 156008 18.0
## 2 2015-2016 descontento_economico 2625 156008 16.8
## 3 2008-2015 descontento_economico 2607 154246 16.9
## 4 2008-2015 pueblo_vs_elite 1820 154246 11.8
## 5 2015-2016 amenaza_migratoria 1685 156008 10.8
## 6 2015-2016 restauracion_nacional 866 156008 5.55
## 7 2008-2015 moderacion_institucional 710 154246 4.60
## 8 2008-2015 decadencia_nacional 554 154246 3.59
## 9 2015-2016 decadencia_nacional 550 156008 3.53
## 10 2008-2015 amenaza_migratoria 500 154246 3.24
## 11 2008-2015 restauracion_nacional 453 154246 2.94
## 12 2015-2016 moderacion_institucional 342 156008 2.19
ggplot(conteo_normalizado, aes(x = categoria, y = frecuencia_por_1000, fill = periodo)) +
geom_col(position = "dodge") +
coord_flip() +
labs(
title = "Comparación de categorĆas discursivas por periodo",
subtitle = "Frecuencia por cada 1000 palabras",
x = "CategorĆa",
y = "Frecuencia por 1000 palabras"
)

frases_clave <- corpus_maga %>%
mutate(
texto_min = str_to_lower(texto),
make_america_great_again = str_count(texto_min, "make america great again"),
maga = str_count(texto_min, "\\bmaga\\b"),
america_first = str_count(texto_min, "america first"),
build_the_wall = str_count(texto_min, "build the wall")
) %>%
group_by(periodo) %>%
summarise(
make_america_great_again = sum(make_america_great_again, na.rm = TRUE),
maga = sum(maga, na.rm = TRUE),
america_first = sum(america_first, na.rm = TRUE),
build_the_wall = sum(build_the_wall, na.rm = TRUE)
)
frases_clave
## # A tibble: 2 Ć 5
## periodo make_america_great_again maga america_first build_the_wall
## <chr> <int> <int> <int> <int>
## 1 2008-2015 0 0 0 0
## 2 2015-2016 202 0 98 13
categorias_por_doc <- tokens %>%
inner_join(diccionario, by = "word") %>%
count(id, periodo, actor, titulo, categoria, name = "n_categoria")
total_por_doc <- tokens %>%
count(id, periodo, actor, titulo, name = "total_palabras_doc")
categorias_por_doc <- categorias_por_doc %>%
left_join(total_por_doc, by = c("id", "periodo", "actor", "titulo")) %>%
mutate(frecuencia_por_1000 = n_categoria / total_palabras_doc * 1000)
matriz_categorias <- categorias_por_doc %>%
select(id, periodo, actor, titulo, categoria, frecuencia_por_1000) %>%
pivot_wider(
names_from = categoria,
values_from = frecuencia_por_1000,
values_fill = 0
)
View(matriz_categorias)
matriz_todo <- matriz_categorias %>%
select(
amenaza_migratoria,
decadencia_nacional,
descontento_economico,
moderacion_institucional,
pueblo_vs_elite,
restauracion_nacional
)
correlacion_todo <- cor(
matriz_todo,
method = "spearman",
use = "pairwise.complete.obs"
)
correlacion_todo
## amenaza_migratoria decadencia_nacional
## amenaza_migratoria 1.0000000 0.32479425
## decadencia_nacional 0.3247942 1.00000000
## descontento_economico 0.3442818 0.42592788
## moderacion_institucional 0.1158832 0.13220310
## pueblo_vs_elite 0.2314826 0.08440606
## restauracion_nacional 0.1097421 0.14144818
## descontento_economico moderacion_institucional
## amenaza_migratoria 0.34428177 0.11588320
## decadencia_nacional 0.42592788 0.13220310
## descontento_economico 1.00000000 0.20489592
## moderacion_institucional 0.20489592 1.00000000
## pueblo_vs_elite 0.08054657 -0.05583785
## restauracion_nacional 0.16989831 0.12482463
## pueblo_vs_elite restauracion_nacional
## amenaza_migratoria 0.23148256 0.10974214
## decadencia_nacional 0.08440606 0.14144818
## descontento_economico 0.08054657 0.16989831
## moderacion_institucional -0.05583785 0.12482463
## pueblo_vs_elite 1.00000000 0.04171078
## restauracion_nacional 0.04171078 1.00000000
correlacion_todo_larga <- as.data.frame(correlacion_todo) %>%
rownames_to_column("categoria_1") %>%
pivot_longer(
cols = -categoria_1,
names_to = "categoria_2",
values_to = "correlacion"
)
ggplot(correlacion_todo_larga, aes(x = categoria_1, y = categoria_2, fill = correlacion)) +
geom_tile() +
geom_text(aes(label = round(correlacion, 2)), size = 3) +
labs(
title = "Correlación entre categorĆas discursivas en el corpus completo",
subtitle = "Correlación de Spearman por documento",
x = "CategorĆa",
y = "CategorĆa",
fill = "Correlación"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

matriz_2008_2015 <- matriz_categorias %>%
filter(periodo == "2008-2015") %>%
select(
amenaza_migratoria,
decadencia_nacional,
descontento_economico,
moderacion_institucional,
pueblo_vs_elite,
restauracion_nacional
)
correlacion_2008_2015 <- cor(
matriz_2008_2015,
method = "spearman",
use = "pairwise.complete.obs"
)
correlacion_2008_2015
## amenaza_migratoria decadencia_nacional
## amenaza_migratoria 1.00000000 0.16120630
## decadencia_nacional 0.16120630 1.00000000
## descontento_economico -0.05617670 0.24654622
## moderacion_institucional 0.05727986 -0.23816798
## pueblo_vs_elite 0.12858582 -0.12258792
## restauracion_nacional 0.12433784 0.05769597
## descontento_economico moderacion_institucional
## amenaza_migratoria -0.05617670 0.057279862
## decadencia_nacional 0.24654622 -0.238167978
## descontento_economico 1.00000000 -0.260982727
## moderacion_institucional -0.26098273 1.000000000
## pueblo_vs_elite -0.05726844 0.086758243
## restauracion_nacional 0.20192392 0.007468898
## pueblo_vs_elite restauracion_nacional
## amenaza_migratoria 0.12858582 0.124337840
## decadencia_nacional -0.12258792 0.057695972
## descontento_economico -0.05726844 0.201923920
## moderacion_institucional 0.08675824 0.007468898
## pueblo_vs_elite 1.00000000 -0.054201988
## restauracion_nacional -0.05420199 1.000000000
matriz_trump <- matriz_categorias %>%
filter(actor == "Donald Trump") %>%
select(
amenaza_migratoria,
decadencia_nacional,
descontento_economico,
moderacion_institucional,
pueblo_vs_elite,
restauracion_nacional
)
correlacion_trump <- cor(
matriz_trump,
method = "spearman",
use = "pairwise.complete.obs"
)
correlacion_trump
## amenaza_migratoria decadencia_nacional
## amenaza_migratoria 1.00000000 0.3792931
## decadencia_nacional 0.37929306 1.0000000
## descontento_economico 0.47146623 0.3888327
## moderacion_institucional 0.13274801 0.1724684
## pueblo_vs_elite 0.22428689 0.1388230
## restauracion_nacional 0.08106253 0.1828377
## descontento_economico moderacion_institucional
## amenaza_migratoria 0.4714662 0.13274801
## decadencia_nacional 0.3888327 0.17246842
## descontento_economico 1.0000000 0.25869508
## moderacion_institucional 0.2586951 1.00000000
## pueblo_vs_elite 0.1256261 -0.06253457
## restauracion_nacional 0.1943964 0.15818904
## pueblo_vs_elite restauracion_nacional
## amenaza_migratoria 0.22428689 0.08106253
## decadencia_nacional 0.13882303 0.18283770
## descontento_economico 0.12562614 0.19439637
## moderacion_institucional -0.06253457 0.15818904
## pueblo_vs_elite 1.00000000 0.04928479
## restauracion_nacional 0.04928479 1.00000000
datos_regresion <- matriz_categorias %>%
mutate(
periodo_trump = if_else(periodo == "2015-2016", 1, 0)
)
modelo_logit <- glm(
periodo_trump ~ amenaza_migratoria +
decadencia_nacional +
descontento_economico +
moderacion_institucional +
pueblo_vs_elite +
restauracion_nacional,
data = datos_regresion,
family = binomial()
)
summary(modelo_logit)
##
## Call:
## glm(formula = periodo_trump ~ amenaza_migratoria + decadencia_nacional +
## descontento_economico + moderacion_institucional + pueblo_vs_elite +
## restauracion_nacional, family = binomial(), data = datos_regresion)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.6654269 0.2188933 3.040 0.00237 **
## amenaza_migratoria 0.0331911 0.0104708 3.170 0.00153 **
## decadencia_nacional -0.0266543 0.0196929 -1.353 0.17590
## descontento_economico -0.0234530 0.0052630 -4.456 8.34e-06 ***
## moderacion_institucional 0.0008132 0.0175414 0.046 0.96303
## pueblo_vs_elite 0.0190347 0.0084783 2.245 0.02476 *
## restauracion_nacional 0.0708341 0.0219474 3.227 0.00125 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 551.71 on 471 degrees of freedom
## Residual deviance: 484.01 on 465 degrees of freedom
## AIC: 498.01
##
## Number of Fisher Scoring iterations: 5
write_csv(conteo_normalizado, "resultados_categorias_con_obama.csv")
write_csv(frases_clave, "resultados_frases_clave_con_obama.csv")
write_csv(matriz_categorias, "matriz_categorias_con_obama.csv")