如何将按国家列出的世界部长和内阁成员的PDF格式转换为R中的.csv格式

如何将按国家列出的世界部长和内阁成员的PDF格式转换为R中的.csv格式,r,pdf,R,Pdf,中央情报局每年多次公布所有国家的世界领导人和内阁部长名单。此信息以PDF格式提供 我想用R将这个PDF转换成CSV,然后分离和整理数据 我正在从“”获取PDF 在页面右中角的“以前年份的PDF版本”链接下 每个PDF都有一些介绍页面,然后列出每个国家的领导人和部长。 每个“标题”和“名称”由不同长度的“……”分隔 我曾尝试使用pdftools包从PDF转换,但我不太确定如何处理排序和整理数据的格式 以下是我下载PDF的第一步 library(pdftools) text <- pdf_

中央情报局每年多次公布所有国家的世界领导人和内阁部长名单。此信息以PDF格式提供

我想用R将这个PDF转换成CSV,然后分离和整理数据

我正在从“”获取PDF 在页面右中角的“以前年份的PDF版本”链接下

每个PDF都有一些介绍页面,然后列出每个国家的领导人和部长。 每个“标题”和“名称”由不同长度的“……”分隔

我曾尝试使用pdftools包从PDF转换,但我不太确定如何处理排序和整理数据的格式

以下是我下载PDF的第一步

library(pdftools)


text <- pdf_text("Data/April2006ChiefsDirectory.pdf")
test <- as.data.frame(text)
库(pdftools)

text您可以使用
tabulizer
进行操作,但如果要导入文档的所有240页,则需要进行一些清理工作。 在这里,我导入第4页,这是第一个关于领导者的信息

library(tabulizer)


mw_table <- extract_tables(
  "https://www.cia.gov/library/publications/resources/world-leaders-1/pdfs/2019/January2019ChiefsDirectory.pdf",
  output = "data.frame",
  pages = 4,
  area =  list(c(35.68168, 40.88842, 740.97853, 497.74737 )),
  guess = FALSE
  )



head(mw_table[[1]])
#>                   X                Afghanistan
#> 1                   Last Updated:  20 Dec 2017
#> 2             Pres.               Ashraf GHANI
#> 3               CEO     Abdullah ABDULLAH, Dr.
#> 4  First Vice Pres.        Abdul Rashid DOSTAM
#> 5 Second Vice Pres.              Sarwar DANESH
#> 6  First Deputy CEO        Khyal Mohammad KHAN
库(tabulizer)
mw_表十阿富汗
#>1最后更新日期:2017年12月20日
#>2阿什拉夫·加尼主席
#>3首席执行官阿卜杜拉·阿卜杜拉博士。
#>4第一副主席阿卜杜勒·拉希德·多斯塔姆
#>5第二副总统萨瓦尔·达内什
#>6第一副首席执行官Khyal Mohammad KHAN

您可以使用要导入的页面向量作为
页面
中的参数。考虑到你将所有的国家名字埋在第二栏中的人名中。可能您可以通过查找第一列中出现的空

找到一种识别国家索引的方法。

您可以使用
tabulizer
完成此操作,但如果您要导入文档的所有240页,则需要进行一些清理工作。 在这里,我导入第4页,这是第一个关于领导者的信息

library(tabulizer)


mw_table <- extract_tables(
  "https://www.cia.gov/library/publications/resources/world-leaders-1/pdfs/2019/January2019ChiefsDirectory.pdf",
  output = "data.frame",
  pages = 4,
  area =  list(c(35.68168, 40.88842, 740.97853, 497.74737 )),
  guess = FALSE
  )



head(mw_table[[1]])
#>                   X                Afghanistan
#> 1                   Last Updated:  20 Dec 2017
#> 2             Pres.               Ashraf GHANI
#> 3               CEO     Abdullah ABDULLAH, Dr.
#> 4  First Vice Pres.        Abdul Rashid DOSTAM
#> 5 Second Vice Pres.              Sarwar DANESH
#> 6  First Deputy CEO        Khyal Mohammad KHAN
库(tabulizer)
mw_表十阿富汗
#>1最后更新日期:2017年12月20日
#>2阿什拉夫·加尼主席
#>3首席执行官阿卜杜拉·阿卜杜拉博士。
#>4第一副主席阿卜杜勒·拉希德·多斯塔姆
#>5第二副总统萨瓦尔·达内什
#>6第一副首席执行官Khyal Mohammad KHAN

您可以使用要导入的页面向量作为
页面
中的参数。考虑到你将所有的国家名字埋在第二栏中的人名中。也许你可以通过查找第一列中出现的空的
来找到一种识别国家索引的方法。

该文件作为文本文件非常混乱,有时标题包含两行文本,或者标题和名称之间的分隔不对齐。你会考虑在(Linux)shell Woth<代码> PDFtoTeX<代码>和<代码> AWK < /代码>中的预处理吗?可能,我将对此进行研究。谢谢你的建议。这个文件作为一个文本文件是非常混乱的,有时标题会占用两行文本,或者标题和名称之间的分隔不对齐。你会考虑在(Linux)shell Woth<代码> PDFtoTeX<代码>和<代码> AWK < /代码>中的预处理吗?可能,我将对此进行研究。谢谢你的建议。谢谢,这很有帮助!“区域”命令在这种情况下做什么?您是如何选择它的?关于如何将这些表保存为csv文件,您有什么建议吗?这样我可能可以更好地整理数据。命令是
extract\u areas()
,用于以交互方式选择要提取的表区域。在这里检查包的名称,特别是“交互式表提取”部分。要将其保存到csv,您只需使用类似于
write.csv(mw_table[[1]],“mydata.csv”)
的东西,这非常有用!“区域”命令在这种情况下做什么?您是如何选择它的?关于如何将这些表保存为csv文件,您有什么建议吗?这样我可能可以更好地整理数据。命令是
extract\u areas()
,用于以交互方式选择要提取的表区域。在这里检查包的名称,特别是“交互式表提取”部分。要将其保存到csv,只需使用类似于
write.csv(mw_table[[1]],“mydata.csv”)