如何解决将不同的数据框导出到同一Excel工作表
我正在使用 openxlsx 包将数据帧从R导出到excel。
如何导出多个数据框:
a <- data.frame("y"=c(2009,2010,2011,2012),"b"=c(3,4,5,6))
b <- data.frame("y"=c(2009,"b"=c(12,2,7,8))
c <- data.frame("y"=c(2009,"b"=c(5,9,1,6))
在同一张Excel工作表上,每一个与上一个用空行隔开,并为每一个添加一个列名?
解决方法
我们可以使用 writeData 和 startRow 参数一起玩,这里是一个示例:
# create workbook
wb <- createWorkbook()
addWorksheet(wb,"Sheet1")
# add dataframes a,b,c starting on different rows
writeData(wb = wb,sheet = "Sheet1",startCol = 1,startRow = 1,x = a)
writeData(wb = wb,startRow = 1 + nrow(a) + 2,x = b)
writeData(wb = wb,startRow = 1 + nrow(a) + 2 + nrow(b) + 2,x = c)
# outout to a file
saveWorkbook(wb,"myFile.xlsx",overwrite = TRUE)
,
也许您可以尝试以下类似的方法
df <- do.call(rbind,lapply(list(a,c),function(x) rbind(x,"")))
write.xlsx(df,"xxx.xlsx")
df
的外观
> df
y b
1 2009 3
2 2010 4
3 2011 5
4 2012 6
5
6 2009 12
7 2010 2
8 2011 7
9 2012 8
10
11 2009 5
12 2010 9
13 2011 1
14 2012 6
15
如果您想垂直堆叠这些数据帧,这是另一种版本(类似于@zx8754的版本)
wb <- createWorkbook()
addWorksheet(wb,"Sheet1")
lst <- list(a,c)
startRows <- cumsum(c(1,(sapply(lst,nrow)+2)[-length(lst)]))
for (k in seq_along(lst)) {
writeData(wb = wb,startRow = startRows[k],x = lst[[k]])
}
saveWorkbook(wb,"xxxx.xlsx",overwrite = TRUE)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。