【问题标题】:Unformatted Excel data import?未格式化的 Excel 数据导入?
【发布时间】:2018-08-20 14:19:33
【问题描述】:

我正在尝试读取包含 30 多个数据选项卡的 Excel 文件。复杂之处在于每个选项卡实际上都有 2 个表。工作表顶部有一个表格,然后是几行空白行,然后是下面的第二个表格,其列标题完全不同。

我知道openxlsxreadxl 包,但它们似乎假定Excel 数据被格式化成整齐的表格。

如果我可以将原始数据输入 R(也许在文本矩阵中......),我相信我可以完成将其解析为数据帧的繁琐工作。有什么建议吗?非常感谢。

【问题讨论】:

  • 欢迎来到 StackOverflow!对于代码调试,请始终根据MCVEr 标签描述使用reproducible 示例进行询问。目前尚不清楚问题是什么。
  • 也许是tidyxl?另见jailbreakr
  • 我可以通过使用readxl 包中的read_xlsx 并设置选项col_names = FALSE 来解决我的问题。

标签: r readxl openxlsx excel-import


【解决方案1】:

您可以使用XLConnect 包访问 Excel 工作表中的任意区域。然后您可以提取数据框列表。请看下面:

模拟:

library(XLConnect)

# simulate xlsx-file
df1 <- data.frame(x = 1:10, y = 0:9)
df2 <- data.frame(x = 1:20, y = 0:19)
wb <- loadWorkbook("temp.xlsx", create = TRUE )
createSheet(wb, "sh1")
writeWorksheet(wb, df1, "sh1", startRow = 1)
writeWorksheet(wb, df2, "sh1", startRow = 15)
lapply(2:30, function(x) cloneSheet(wb, "sh1", paste0("sh", x)))
saveWorkbook(wb)

提取数据

# read.data
wb <- loadWorkbook("temp.xlsx")
df1s <- lapply(1:30, function(x) readWorksheet(wb, x, startRow = 1, endRow = 11))
df2s <- lapply(1:30, function(x) readWorksheet(wb, x, startRow = 15, endRow = 35))
df1s[[1]]
df2s[[2]]

输出data.frame#1 来自第一张,data.frame#2 来自第二张:

> df1s[[1]]
    x y
1   1 0
2   2 1
3   3 2
4   4 3
5   5 4
6   6 5
7   7 6
8   8 7
9   9 8
10 10 9
> df2s[[2]]
    x  y
1   1  0
2   2  1
3   3  2
4   4  3
5   5  4
6   6  5
7   7  6
8   8  7
9   9  8
10 10  9
11 11 10
12 12 11
13 13 12
14 14 13
15 15 14
16 16 15
17 17 16
18 18 17
19 19 18
20 20 19

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 2011-08-27
    • 2019-07-19
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多