我正在尝试读取包含 30 多个数据选项卡的 Excel 文件。复杂之处在于每个选项卡实际上有2 个表。工作表顶部有一个表格,然后是几行空白行,然后是下面的第二个表格,其列标题完全不同。
我知道openxlsx
和readxl
包,但他们似乎假设 Excel 数据被格式化为整齐的表格。
如果我可以将原始数据输入 R(也许在文本矩阵中......),我相信我可以完成将其解析为数据帧的繁琐工作。有什么建议吗?非常感谢。
我正在尝试读取包含 30 多个数据选项卡的 Excel 文件。复杂之处在于每个选项卡实际上有2 个表。工作表顶部有一个表格,然后是几行空白行,然后是下面的第二个表格,其列标题完全不同。
我知道openxlsx
和readxl
包,但他们似乎假设 Excel 数据被格式化为整齐的表格。
如果我可以将原始数据输入 R(也许在文本矩阵中......),我相信我可以完成将其解析为数据帧的繁琐工作。有什么建议吗?非常感谢。
您可以使用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