0

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

我知道openxlsxreadxl包,但他们似乎假设 Excel 数据被格式化为整齐的表格。

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

4

1 回答 1

0

您可以使用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)

Excel

提取数据

# 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.frame2:

> 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
于 2018-09-21T23:33:13.357 回答