【问题标题】:PDF conversion to CSV RPDF 转换为 CSV R
【发布时间】:2018-02-20 12:01:26
【问题描述】:

我正在尝试将以下 PDF 加载到 R 中,并将表格转换为 CSV 文件。

我已经尝试了 library(pdftools) 和 library(tabulizer),并且我花了一个下午浏览各种论坛,但我似乎没有找到适合我的答案。我可以使用以下代码将 PDF 加载到 R

x <- pdf_text("~/Desktop/PlantTraitAsia.pdf")

它上传得很好,但它根本不是我可以使用的表格。

这是 PDF 文件的链接:

http://vege1.kan.ynu.ac.jp/traits/PlantTraitAsia.pdf

我只想将表格上传到 R 中,保留标题,并能够将其导出为 TXT、CSV 或 XLS 文件。

感谢您的帮助

【问题讨论】:

  • 事实上,x 在你的“示例”中——特别是x[2:34]——包含一些非常有用的数据,你只是想要魔术发生而不是解析固定宽度的行。而且,鉴于 David 为 tabulizer 展示的内容,我发现很难投资于您声称尝试过它的真实性。
  • 您好,感谢您的回复。而且我知道从我写的内容中我得到了一些有用的东西,但还不足以让我知道如何处理数据集。此外,我确实花了很多时间在这个问题上,在论坛上花费了几个小时,而且因为我无法让它发挥作用,我觉得我最好问问。我并不是说它是“为我工作”,这是/是代表我提出的一个真正的问题

标签: r csv pdf pdftools tabulizer


【解决方案1】:

这在我的机器上运行良好:

zz <- tabulizer::extract_tables("http://vege1.kan.ynu.ac.jp/traits/PlantTraitAsia.pdf", pages = 2)
head(zz[[1]])

这会产生:

     [,1]  [,2]                      [,3]                    
[1,] "ID"  "Category\rof\rpermissio" "Species"               
[2,] "83"  "A"                       "Abies mariesii Masters"
[3,] "155" "A"                       "Abies mariesii Masters"
[4,] "225" "A"                       "Abies mariesii Masters"
[5,] "297" "A"                       "Abies mariesii Masters"
[6,] "369" "A"                       "Abies mariesii Masters"
     [,4]                                                                            [,5]         [,6]   
[1,] "Traits"                                                                        "Value"      "Notes"
[2,] "Maximum heighyt (m)"                                                           "18.17"      ""     
[3,] "Shade tolerance (min. relative\rlight intensity, %), Anderson\r1964. J. Ecol." "1.15"       ""     
[4,] "Length of fruit (mm)"                                                          "8"          ""     
[5,] "Pollination mode"                                                              "Anemophily" ""     
[6,] "Type of fruit"                                                                 "Wing-hair"  ""     

仅获取标题(表格的第一行):

zz[[1]][1,]

【讨论】:

  • 嗨@David。有趣的是,我也尝试过类似这样的代码,来自以前的论坛,但在使用函数 extract_tables 时出现错误。我只在尝试代码之前打开库(tabulizer),我应该打开任何其他库吗?这是我得到的错误: .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.NoSuchMethodError: java.lang.Integer.compare(II)I 和我尝试直接从我的机器加载 PDF,并得到同样的错误。
  • 好的,这意味着您遇到了tabulizer 需要的rJava 问题。搜索一下关于 rJava 和安装的 SO,你应该找到解决方案
  • 你好@大卫。我让 rJava 在我的 mac 上工作,但我仍然遇到与上面发布的相同的错误。我在这方面花了相当多的时间,我会在工作的 PC 上尝试一下,看看它是否适用于 PC,而不是在 Mac 上。
猜你喜欢
  • 2014-03-05
  • 2012-08-01
  • 2023-01-24
  • 2019-06-29
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多