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