首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于字符串和tabulizer包的列表提取

基于字符串和tabulizer包的列表提取
EN

Stack Overflow用户
提问于 2017-10-26 09:55:41
回答 1查看 227关注 0票数 2

提取季度损益表,并将其转换为表格形式。

代码语言:javascript
运行
复制
# 2017 Q3 Report
telia_url = "http://www.teliacompany.com/globalassets/telia-
company/documents/reports/2017/q3/telia-company-q3-2017-en"
telialists = extract_tables(telia_url)
teliatest1 = as.data.frame(telialists[22])

#2009 Q3#
telia_url2009 = "http://www.teliacompany.com/globalassets/telia-
company/documents/reports/2009/q3/teliasonera-q3-2009-report-en.pdf"
telialists2009 = extract_tables(telia_url2009)
teliatest2 = as.data.frame(telialists2009[9])

只对综合综合报表感兴趣的综合收入表。对于所有历史报告,此字符串都是精确的或非常相似的。

上面,在2017年的报告中,第22份是正确的表格。然而,由于2009年的报告有不同的布局,第9是正确的具体报告。

根据“汇总综合收入报表”中的字符串(或子字符串)所在的位置,有什么聪明的解决方案可以使这个函数动态化?

也许使用tm包来查找相对位置?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-27 22:34:59

您可以使用pdftools找到您感兴趣的页面。

例如,像这样的函数应该完成以下工作:

代码语言:javascript
运行
复制
get_table <- function(url) {
  txt <- pdftools::pdf_text(url)
  p <- grep("condensed consolidated statements.{0,10}comprehensive income", 
            txt,
            ignore.case = TRUE)[1]
  L <- tabulizer::extract_tables(url, pages = p)
  i <- which.max(lengths(L))
  data.frame(L[[i]])
}

第一步是读取字符向量txt中的所有页面。然后,grep允许您找到您想要的第一页(我插入了.{0,10}以允许最多10个字符,比如标题中间的空格或换行符)。

使用tabulizer,您可以提取位于此页面上的所有表的列表L,这应该比提取文档的所有表要快得多,就像您所做的那样。您的表可能是该页面中最大的表,因此是which.max

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46951283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档