我在抓取此网络pdf
表时遇到了问题:
https://www.usbr.gov/mp/cvo/vungvari/milfln.pdf
变成data.frame
。这是我到目前为止的内容:
library(pdftools)
df <- "https://www.usbr.gov/mp/cvo/vungvari/milfln.pdf"
df <- pdf_text(df)
从这里开始,似乎所有数据都已被擦除,但是列结构丢失了。有什么推荐的方法可以重新建立列(或完全不用pdftools
进行刮擦)?一旦建立了列,我想我就可以格式化/整理数据了。谢谢。
答案 0 :(得分:1)
您的代码以文本形式返回pdf。桌子在那儿,你只需要把它拿出来。
library(pdftools)
file <- "https://www.usbr.gov/mp/cvo/vungvari/milfln.pdf"
rawtext <- pdf_text(file)
start <- "\r\n 1"
end <- "\r\n TOTALS"
df <- read.table(text=substring(rawtext, regexpr(start, rawtext), regexpr(end, rawtext)))
> head(df)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13
1 1 41,633 18,956 86,010 100,117 121,958 24,176 40,473 3,739 437,062 +1,443 +728 6,904
2 2 41,867 20,547 86,241 100,249 122,481 24,282 40,635 3,715 440,017 +2,955 +1,490 6,874
3 3 42,212 22,371 86,148 100,249 122,882 23,753 40,841 3,739 442,195 +2,178 +1,098 8,201
4 4 43,002 25,223 86,460 100,396 123,395 23,734 41,059 3,722 446,991 +4,796 +2,418 9,363
5 5 44,225 29,253 86,923 100,601 123,804 23,602 41,356 3,680 453,444 +6,453 +3,253 11,137
6 6 45,978 34,036 87,529 101,234 123,954 23,548 41,642 3,643 461,564 +8,120 +4,094 12,288
V14 V15
1 7,632 1,554.8
2 8,364 1,571.4
3 9,299 1,589.8
4 11,781 1,613.2
5 14,390 1,641.7
6 16,382 1,674.2
regexpr
返回start
和end
所在的字符串中的索引。 substring
使用这些索引将文本限制为仅表格。然后read.table
将文本格式化为data.frame
。您必须自己添加列标题。您可能还希望删除逗号并将列更改为数值。