Por favor, considere a seguinte tabela encontrada em um arquivo PDF:
Posso baixar e extrair a tabela com o seguinte código:
url <- "https://www.fenabrave.org.br/portal/files/2023_01_2.pdf"
download.file(url, 'cars.pdf', mode="wb")
library(tabulapdf)
df <- extract_tables(
'cars.pdf',
pages = 27,
area = list(c(126.4826, 96.5997, 782.1684, 297.9600)),
guess = FALSE)
bind_rows() |>
set_names(c("Model","Quantity"))
Infelizmente, a função lê as quantidades como um tipo double e remove todos os zeros no final.
Posso adicionar o seguinte código para alterar sua classe:
df <- extract_tables(
'cars.pdf',
pages = 27,
area = list(c(126.4826, 96.5997, 782.1684, 297.9600)),
guess = FALSE) |>
bind_rows() |>
set_names(c("Model","Quantity"))|>
mutate(Quantity = gsub("\\.", "", Quantity))|>
mutate(Quantity = as.integer(Quantity))
Mas o estrago já está feito: 2.830 virou 283; 1.220 virou 122.
Existe uma maneira de fazer com que os dados sejam lidos como char?
extract_tables
permite que você leia dados comocharacter
vetor. Isso pode ser analisado usandofread
withcolClasses = 'character'
para ler todas as colunas como caracteres. Então você pode usargsub("\\.","",df2$quantity)
para remover o ponto de milhares.dando
Teste PDF