【发布时间】:2018-02-26 07:53:56
【问题描述】:
我的公司以 pdf 格式的文件记录每个客户的政策/服务摘要。这些文件每年都会合并成一个大型数据集。每个客户一行和列是客户文档中的变量。这些文件有几千个,每个文件大约有 20-30 个变量。我想通过创建一个每行代表一个客户的 data.frame 来自动化这个过程,然后从他们的 pdf 文档中提取每个客户的变量。我可以通过目录中的 pdf 文件名创建所有客户端的列表或 data.frame,但不知道如何创建一个循环来提取每个文档所需的每个变量。我目前有两种不同的方法,我无法决定,并且还需要一个循环来获取每个客户文档所需的变量。下面提供了我的代码和两个模拟文件的链接。任何帮助将不胜感激!
方法一:pdftools
第一种方法的好处是将整个pdf提取到一个向量中,并将每个页面提取到一个单独的元素中。这使我更容易拉字符串/变量。但是,不知道如何循环它以从每个客户端提取信息并将其适当地放置在每个客户端的列中。
library(pdftools)
library(stringr)
Files <- list.files(path="...", pattern=".pdf")
Files <- Files %% mutate(FR =
str_match(text, "\\$\\d+\\s\\Financial Reporting")) #Extract the first variable
方法二:
这种方法的好处是它自动为每个客户端文档创建一个数据库,文件名作为一行,每个 pdf 在一个变量中。缺点是变量中的整个 pdf 使得匹配和提取字符串比将每个页面都放在自己的元素中更加困难。我不知道如何编写一个循环来提取每个客户端的变量并将它们放在各自的列中。
DF <- readtext("directory pathway/*.pdf")
DF <- DF %>% mutate(FR =
str_match(text, "\\$\\d+\\s\\Financial Reporting"))
【问题讨论】:
标签: r loops pdf dataframe stringr