使用奇怪的 headers 将 pdf 表导入到 r
Importing pdf tables to r with weird headers
我正在尝试将此 pdf https://www.mountwashington.org/uploads/forms/2018/01.pdf 导入到 r 并将其格式化为数据框。有没有一种方法可以有效地处理奇怪的 headers 并只获取主要的 headers(而不是更大的 headers,比如位置和站点)来获取数据?
通过转换器网站将 pdf 转换为 excel 文件,然后手动编辑 excel 中的 columns/rows,然后导入到 r但这是非常低效的,并且想以某种方式在 r 中进行。我尝试使用 tabulizer 包,但它给我的数据是字符形式的,而且完全没有组织。
这是我想要的样子:
> a
DAY MAX MIN AVG NORM DEPART HEAT COOL TOTAL..EQUIV. SNOW...ICE AVG.WIND.SPEED..MPH. FASTEST.SPEED DIR
1 1 -14 -25 -19 6 -25 84 0 0.00 0.0 55.3 79 310 (NW)
2 2 -7 -23 -15 6 -21 80 0 0.01 0.7 53.8 84 280 (W)
3 3 7 -7 0 6 -6 65 0 T T 39.2 64 280 (W)
这就是我使用 tabulizer 得到的结果:
[,1]
[1,] "WS FORM F-6"
[2,] ""
[3,] "PRELIMINARY LOCAL CLIMATOLOGICAL DATA"
[4,] ""
[5,] "LATITUDE LONGITUDE"
[6,] "44 DEGREES16 MINUTESNORTH 71 DEGREES 18 MINUTES WEST"
[7,] "TEMPERATURE (°F) PRECIPITATION (IN.)"
[8,] "DEGREE DAYS TOTAL SNOW & SNOW/ICE ON AVG"
[9,] "DAY MAX MIN AVG NORM DEPART HEAT COOL (EQUIV) ICE GROUND-7AM SPEED"
[10,] "1 -14 -25 -19 6 -25 84 0 0.00 0.0 23 55.3"
然后是更多行,其中包含更多似乎随机从页面中提取的无组织数据。
任何帮助都会很棒,谢谢!
您可以使用tabulizer
提取table。使用locate_areas
找到要提取的区域的坐标。
看看这个link
library(tabulizer)
# I used locate_areas("https://www.mountwashington.org/uploads/forms/2018/01.pdf")
# to find the area of the table to extract
mw_table <- extract_tables(
"https://www.mountwashington.org/uploads/forms/2018/01.pdf",
output = "data.frame",
area = list(c(103.49321, 15.79171, 402.56716, 586.74627)),
guess = FALSE
)
mw_table[[1]]
然后你只需要更改数据框的名称。
我正在尝试将此 pdf https://www.mountwashington.org/uploads/forms/2018/01.pdf 导入到 r 并将其格式化为数据框。有没有一种方法可以有效地处理奇怪的 headers 并只获取主要的 headers(而不是更大的 headers,比如位置和站点)来获取数据?
通过转换器网站将 pdf 转换为 excel 文件,然后手动编辑 excel 中的 columns/rows,然后导入到 r但这是非常低效的,并且想以某种方式在 r 中进行。我尝试使用 tabulizer 包,但它给我的数据是字符形式的,而且完全没有组织。
这是我想要的样子:
> a
DAY MAX MIN AVG NORM DEPART HEAT COOL TOTAL..EQUIV. SNOW...ICE AVG.WIND.SPEED..MPH. FASTEST.SPEED DIR
1 1 -14 -25 -19 6 -25 84 0 0.00 0.0 55.3 79 310 (NW)
2 2 -7 -23 -15 6 -21 80 0 0.01 0.7 53.8 84 280 (W)
3 3 7 -7 0 6 -6 65 0 T T 39.2 64 280 (W)
这就是我使用 tabulizer 得到的结果:
[,1]
[1,] "WS FORM F-6"
[2,] ""
[3,] "PRELIMINARY LOCAL CLIMATOLOGICAL DATA"
[4,] ""
[5,] "LATITUDE LONGITUDE"
[6,] "44 DEGREES16 MINUTESNORTH 71 DEGREES 18 MINUTES WEST"
[7,] "TEMPERATURE (°F) PRECIPITATION (IN.)"
[8,] "DEGREE DAYS TOTAL SNOW & SNOW/ICE ON AVG"
[9,] "DAY MAX MIN AVG NORM DEPART HEAT COOL (EQUIV) ICE GROUND-7AM SPEED"
[10,] "1 -14 -25 -19 6 -25 84 0 0.00 0.0 23 55.3"
然后是更多行,其中包含更多似乎随机从页面中提取的无组织数据。
任何帮助都会很棒,谢谢!
您可以使用tabulizer
提取table。使用locate_areas
找到要提取的区域的坐标。
看看这个link
library(tabulizer)
# I used locate_areas("https://www.mountwashington.org/uploads/forms/2018/01.pdf")
# to find the area of the table to extract
mw_table <- extract_tables(
"https://www.mountwashington.org/uploads/forms/2018/01.pdf",
output = "data.frame",
area = list(c(103.49321, 15.79171, 402.56716, 586.74627)),
guess = FALSE
)
mw_table[[1]]
然后你只需要更改数据框的名称。