【问题标题】:r recognize and importing Multiple Tables from a Single excel filer 从单个 excel 文件中识别和导入多个表
【发布时间】:2020-04-12 21:01:39
【问题描述】:

我尝试阅读所有这样的帖子,但没有成功。

我需要从 excel 中的单个工作表中为文件的每个工作表提取不同布局的表格。

我们将不胜感激任何可以提供的帮助或想法。

数据文件的样本及其结构可以在Here找到

【问题讨论】:

  • 表格的位置是否保留在每张纸上?
  • 每个表都有相同的标题,但长度不同,具体取决于其中的值的数量。所以标题的位置可能会在每张纸上上下移动
  • 您需要更多信息吗?
  • 也许吧。我可以看到两种方法。但是,我认为到目前为止,最简单的方法是使用 readxl 包阅读整张表,并最初用字母标记列(并确保每列只是一个文本列)。那么希望你能从工作表中找到构成每个表格的单元格块?
  • 好的,但是如何标记和定位?

标签: r parsing extract


【解决方案1】:

我会使用readxl。下面的代码只读取一张纸,但很容易适应阅读多张或不同的纸。

首先,我们只想阅读表格。显然,您应该更改路径以反映您保存文件的位置:

library(readxl)
sheet = read_excel("~/Downloads/try.xlsx", col_names = LETTERS[1:12])

如果您知道您有 12 列,那么使用 read_excel 而不指定列名将为您提供足够的信息来找出它。工作表中的不同表格由一或两行空白行分隔。您可以通过使用apply 函数测试每一行以查看该行中的所有单元格是否为NA 来找到空白行。

blanks = which(apply(sheet, 1, function(row)all(is.na(row))))
blanks
> blanks
 [1]  7  8 17 26 35 41 50 59 65 74 80 86 95 98

因此,您可以通过获取第 1--6 行 (7 - 1) 来提取第一个表,通过获取第 9--16 行来提取第二个表,依此类推。

【讨论】:

  • 非常感谢!
  • 谢谢教授。我可以再请你帮忙吗?提取后,我想合并数据并得到一个像这样的表 --> docs.google.com/spreadsheets/d/… 其中每个选定的行都是最后一个提取的行。你能帮我完成这项工作吗?谢谢
猜你喜欢
  • 1970-01-01
  • 2016-04-17
  • 2014-02-05
  • 2018-07-09
  • 2021-11-16
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多