该文件分为大洲及其国家/地区,我希望大洲作为列标题。我尝试了很多事情,但无法执行该操作。这是pdf文件的链接
问问题
707 次
2 回答
1
如果只是这个文件,那么手动复制和粘贴数据可能是最简单的。
否则,您将需要一个工具将 PDF 转换为文本(有一些可用的在线和离线工具可以做到这一点——这最好取决于您的操作系统和情况)。然后你可能需要编写一些脚本来重新排列文本并创建你想要的 csv。
于 2017-05-01T08:15:32.280 回答
1
这里有一些可以帮助你的想法。
我使用包tabulizer
“绑定到 Tabula java 库,可用于从 PDF 文档中以计算方式提取表格”(链接)。
library("tabulizer")
continents <- c("Africa","Americas","Asia","Australia/Oceania","Europe")
f <- "Countries_where_English_is_an_official_language.pdf"
(rawTxt1 <- extract_text(f, page=1, encoding="UTF-8"))
# Split according to continents
(rawTxt2 <- strsplit(rawTxt1,"\r\n \r\n")[[1]])
# For trimming leading and trailing whitespace
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
# Organize data in a list
extrTxt <- vector(length(continents),mode="list")
cnt <- 1
for (k in 1:length(rawTxt2)) {
rowk <- rawTxt2[k]
spltxt <- trim(strsplit(rowk,"\r\n")[[1]])
if (spltxt[1] %in% continents) {
extrTxt[[cnt]] <- spltxt
cnt <- cnt +1
}
}
print(extrTxt)
结果如下:
[[1]]
[1] "Africa" "Botswana" "Cameroon" "Ethiopia" "Eritrea" "The Gambia" "Ghana" "Kenya"
[9] "Lesotho" "Liberia" "Malawi" "Mauritius" "Namibia" "Nigeria" "Rwanda" "Seychelles"
[17] "Sierra Leone" "South Africa" "South Sudan" "Sudan" "Swaziland" "Tanzania" "Uganda" "Zambia"
[25] "Zimbabwe"
[[2]]
[1] "Americas" "Antigua and Barbuda" "The Bahamas"
[4] "Barbados" "Belize" "Canada"
[7] "Dominica" "Grenada" "Guyana"
[10] "Jamaica" "Saint Kitts and Nevis" "Saint Lucia"
[13] "Saint Vincent and the Grenadines" "Trinidad and Tobago" "United States"
[[3]]
[1] "Asia" "India" "Pakistan" "Philippines" "Singapore"
[[4]]
[1] "Australia/Oceania" "Australia" "Fiji"
[4] "Kiribati" "Marshall Islands" "Federated States of Micronesia"
[7] "Nauru" "New Zealand" "Palau"
[10] "Papua New Guinea" "Samoa" "Solomon Islands"
[13] "Tonga" "Tuvalu" "Vanuatu"
[[5]]
[1] "Europe" "Ireland" "Malta" "United Kingdom"
于 2017-05-01T10:34:42.200 回答