最终目标是使用 pdftools 包有效地浏览一千页 pdf 文档,以一致、安全地生成可用的数据框/标题。我尝试使用 tabulizer 包和 pdf_text 函数,但结果不一致。因此,开始通过pdf_data()
功能,我比较喜欢。
对于那些不熟悉 pdf_data 函数的人来说,它将 pdf 页面转换为坐标网格,0,0 坐标位于页面的左上角。因此,通过排列 x,y 坐标,然后将文档旋转为宽格式,所有信息都会像在页面上一样显示,只有 NA 表示空白
这是一个使用熟悉的 mtcars 数据集的简单示例。
library(pdftools)
library(tidyverse)
library(janitor)
pdf_file <- "https://github.com/ropensci/tabulizer/raw/master/inst/examples/data.pdf"
mtcars_pdf_df <- pdf_data(pdf_file)[[1]]
mtcars_pdf_df%>%
arrange(x, y)%>%
pivot_wider(id_cols = y, names_from = x, values_from = text)%>%
unite(col = Car_type, `154`:`215`, sep = " ", remove = TRUE, na.rm = TRUE)%>%
arrange(y)%>%
rename("Page Number" = `303`)%>%
unite(col = mpg, `253`:`254`, sep = "", remove = TRUE, na.rm = TRUE)%>%
unite(col = cyl, `283` : `291` , sep = "", remove = TRUE, na.rm = TRUE)%>%
unite(col = disp, `308` : `313`, sep = "", remove = TRUE, na.rm = TRUE)
最好不要使用十几个联合函数来重命名各个列。我使用了看门人包row_to_names()
函数在某一时刻将行 1 转换为列名,效果很好,但也许有人有更好的想法?
中心问题;通过合并多个列或移动列以使 NA 被相邻列填充,从数据集中删除 NA。
我正在努力提高效率。可以使用 purrr 包吗?任何有助于提高这一过程效率的帮助将不胜感激。
我所掌握的唯一信息pdf_data()
进入这个的函数来自这里......https://ropensci.org/technotes/2018/12/14/pdftools-20/任何额外的资源也将不胜感激(除了 pdftools 包帮助文档/文献)。
感谢大家!我希望这也能帮助其他人使用pdf_data()
too :)