-
Notifications
You must be signed in to change notification settings - Fork 51
/
scraping_MOMO.Rmd
110 lines (74 loc) · 2.26 KB
/
scraping_MOMO.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
---
title: "Ejemplo extracción (scraping) de tablas de un pdf"
author: "Ricardo Alberich"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,cache=TRUE)
```
## Extración de tablas de un pdf
Podemos bajar el pdf del que queramos extraer la tabla.
```{r}
library(stringr)
library(tabulizer)
#"https://www.isciii.es/QueHacemos/Servicios/VigilanciaSaludPublicaRENAVE/EnfermedadesTransmisibles/MoMo/Documents/informesMoMo2020/MoMo_Situacion%20a%2014%20de%20abril_CNE.pdf"
tablas=tabulizer::extract_tables("data/Datos_MOMO/MoMo_Situacion a 14 de abril_CNE.pdf",encoding = "UTF-8")
```
## La primera de las tablas de MOMO
Tratemos la primera tabla
```{r}
tablas=extract_tables(pdf)
mi_tabla=tablas[[1]]
class(mi_tabla)
str(mi_tabla)
dim(mi_tabla)
mi_tabla
```
Es una matriz de una columna con las 10 filas de datos:
* Las tres primeras son los metadatos de la tebala que se no se han cargado totalmente.
* La fila 4 son los nombres de la tabla
* De la fila 6 a la 10 son los datos y los nombres de las filas de la tabla.
Leamos la primera fila de datos
```{r}
datos_fila5=mi_tabla[5,]
datos_fila5
extrac_data=function(x) {
x=unlist(str_split(x,pattern=" "))
data=x[(length(x)-3):length(x)]
name=paste(x[1:(length(x)-4)],collapse=" ")
c(name,data)
}
extrac_data(mi_tabla[5,])
extrac_data(mi_tabla[6,])
extrac_data(mi_tabla[7,])
extrac_data(mi_tabla[8,])
extrac_data(mi_tabla[9,])
extrac_data(mi_tabla[10,])
```
```{r}
library(stringr)
tabla1_names=mi_tabla[4]
tabla1_names
tabla_data=mi_tabla[5:10]
tabla_data
arreglar= function(fila){
#fila=tabla_data[6]
aux1= unlist(str_split(fila, pattern=" "))
aux1
n=length(aux1)
fila=c(paste0(aux1[1:(n-4)],collapse="_"),aux1[(n-3):n])
fila
}
lista_filas_tabla=lapply(tabla_data,FUN=arreglar)
names(lista_filas_tabla)
do.call(dplyr::bind_rows,lista_filas_tabla)
bind_rows(lista_filas_tabla.id="id")
```
Así que se complica veamos otra solución
```{r}
```
### Referencias
* [tabulizer] https://www.r-bloggers.com/pdf-scraping-in-r-with-tabulizer/)
* [Manual de tabulizer](https://cran.r-project.org/web/packages/tabulizer/vignettes/tabulizer.html)
* Herramienta de scraping de R [rvest](https://cran.r-project.org/web/packages/rvest/rvest.pdf)