未格式化Excel数据导入?

时间:2018-08-20 14:19:34

标签: r readxl openxlsx excel-import

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

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

如果我可以将原始数据放入R(也许在文本矩阵中),我有信心可以将其解析为数据帧。有什么建议吗?非常感谢。

1 个答案:

答案 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)

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.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