私はいくつかのpdfレポートの中のテーブルからデータを抽出しようとしています。Rを使用してPDFテーブルを認識
pdftoolsと同様のパッケージを使っていくつかの例を見てきましたが、私はテキストの取得に成功しましたが、テーブルを抽出したいだけです。
テーブルを認識して抽出するためにRを使用する方法はありますか?
私はいくつかのpdfレポートの中のテーブルからデータを抽出しようとしています。Rを使用してPDFテーブルを認識
pdftoolsと同様のパッケージを使っていくつかの例を見てきましたが、私はテキストの取得に成功しましたが、テーブルを抽出したいだけです。
テーブルを認識して抽出するためにRを使用する方法はありますか?
私もこれに対する答えを知りたいです。しかし、私の経験から、正規表現を使用して、必要な形式でデータを取得する必要があります。例として以下を見ることができます:
library(pdftools)
dat <- pdftools::pdf_text("https://s3-eu-central-1.amazonaws.com/de-hrzg-khl/kh-ffe/public/artikel-pdfs/Free_PDF/BF_LISTE_20016.pdf")
dat <- paste0(dat, collapse = " ")
pattern <- "Berufsfeuerwehr\\s+Straße(.)*02366.39258"
extract <- regmatches(dat, regexpr(pattern, dat))
extract <- gsub('\n', " ", extract)
strsplit(extract, "\\s{2,}")
ここからデータをループして、必要に応じてテーブルを作成することができます。しかし、あなたがリンクで見ることができるように、PDFはテーブルではありません。
最近、私は最近同じことを考えました
私はそれをしました。tabulizer @hrbrmstrも示唆しています。 Rバージョン3.4.0を既に使用している場合、私は以下の解決策を提供しています。特定の順序で3つのパッケージをインストールします。
install.packages("rJava")
library(rJava) # load and attach 'rJava' now
install.packages("devtools")
devtools::install_github("ropensci/tabulizer", args="--no-multiarch")
これで、PDFレポートからテーブルを抽出する準備が整いました。
library(tabulizer)
# specify an example and load it into your workspace
report <- "http://www.stat.ufl.edu/~athienit/Tables/Ztable.pdf"
lst <- extract_tables(report, encoding="UTF-8")
# peep into the doc for further specs (page, location etc.)!
# after examing the list you want to do some tidying
# 1st delete blank columns
lst[[1]] <- lst[[1]][, -3]
lst[[2]] <- lst[[2]][, -4]
# 2nd bind the list elements, if you want and create a df...
table <- do.call(rbind, lst)
table <- as.data.frame(table[c(2:37, 40:nrow(table)), ],
stringsAsFactors=FALSE) # ...w/o obsolete rows
# 3rd take over colnames, cache rownames to vector
colnames(table) <- table[1, ]
rn <- table[2:71, 1]
table <- table[-1,-1] # and bounce them out of the table
# 4th I'm sure you want coerce to numeric
table <- as.data.frame(apply(table[1:70,1:10], 2,
function(x) as.numeric(as.character(x))))
rownames(table) <- rn # bring back rownames
table # voilà
希望します。
制限:は確かに、この例では、テーブルは非常に簡単ですし、多分あなたはgsub
、stringr
tidyr
とかのこの種の周りの混乱に持っています。
パッケージ 'pdftables':https://cran.r-project.org/web/packages/pdftables/pdftables.pdf –
tabulizer(ropensci github) – hrbrmstr