在 R 中拆分大型数据框并在单个 Excel 工作簿中输出到单独的工作表中
Split large dataframe in R and output into separate sheets in a single Excel workbook
假设我在 R 中有以下数据帧,我希望将数据帧拆分为单独的 Excel sheets,按 Fruit 列分类
+--------+-------+
| Fruit | Price |
+--------+-------+
| Apple | 12 |
| Apple | 14 |
| Apple | 15 |
| Orange | 2 |
| Orange | 4 |
| Orange | 6 |
| Pear | 3 |
| Pear | 6 |
| Pear | 9 |
+--------+-------+
将数据帧拆分为 3 个单独的数据帧(Apple、Orange 和 Pear)后,我打算将每个数据帧导出到单独的 Excel sheets(名为 Apple、Orange 和 Pear)但是存储在同一个 Excel 工作簿 Out.xlsx
中。但是,下面的 R 代码不起作用。输出是一个 Excel 工作簿 Out.xlsx
,只有一个 sheet,Pear,包含 Pear 数据框。
library(openxlsx)
df <- read_excel("Export excel test.xlsx")
output <- split(df, df$Fruit)
for (i in 1:length(output)){write.xlsx(x = output[i],
file = "Out.xlsx", sheetName = names(output[i]),append = TRUE)}
有人可以帮忙吗?我的实际数据框有超过 400 万行,因此我需要将数据框拆分为单独的 sheet 以规避 Excel 的行限制
您似乎在使用 xlsx 包中的命令。
xlsx 包还提供了 write.xlsx
功能,允许您附加到现有工作簿。
library(xlsx)
write.xlsx(subset(iris, subset=Species=="setosa"),
file="iris.xlsx", sheetName = "setosa")
write.xlsx(subset(iris, subset=Species=="versicolor"),
file="iris.xlsx", sheetName = "versicolor", append=TRUE)
write.xlsx(subset(iris, subset=Species=="virginica"),
file="iris.xlsx", sheetName = "virginica", append=TRUE)
openxlsx 包的做法略有不同。在这里,我将使用循环代替。
library(openxlsx)
output <- split(iris, iris$Species)
wb <- createWorkbook()
for (i in 1:length(output)) {
addWorksheet(wb, sheetName=names(output[i]))
writeData(wb, sheet=names(output[i]), x=output[[i]]) # Note [[]]
}
saveWorkbook(wb, "iris.xlsx", overwrite = TRUE)
假设我在 R 中有以下数据帧,我希望将数据帧拆分为单独的 Excel sheets,按 Fruit 列分类
+--------+-------+
| Fruit | Price |
+--------+-------+
| Apple | 12 |
| Apple | 14 |
| Apple | 15 |
| Orange | 2 |
| Orange | 4 |
| Orange | 6 |
| Pear | 3 |
| Pear | 6 |
| Pear | 9 |
+--------+-------+
将数据帧拆分为 3 个单独的数据帧(Apple、Orange 和 Pear)后,我打算将每个数据帧导出到单独的 Excel sheets(名为 Apple、Orange 和 Pear)但是存储在同一个 Excel 工作簿 Out.xlsx
中。但是,下面的 R 代码不起作用。输出是一个 Excel 工作簿 Out.xlsx
,只有一个 sheet,Pear,包含 Pear 数据框。
library(openxlsx)
df <- read_excel("Export excel test.xlsx")
output <- split(df, df$Fruit)
for (i in 1:length(output)){write.xlsx(x = output[i],
file = "Out.xlsx", sheetName = names(output[i]),append = TRUE)}
有人可以帮忙吗?我的实际数据框有超过 400 万行,因此我需要将数据框拆分为单独的 sheet 以规避 Excel 的行限制
您似乎在使用 xlsx 包中的命令。
xlsx 包还提供了 write.xlsx
功能,允许您附加到现有工作簿。
library(xlsx)
write.xlsx(subset(iris, subset=Species=="setosa"),
file="iris.xlsx", sheetName = "setosa")
write.xlsx(subset(iris, subset=Species=="versicolor"),
file="iris.xlsx", sheetName = "versicolor", append=TRUE)
write.xlsx(subset(iris, subset=Species=="virginica"),
file="iris.xlsx", sheetName = "virginica", append=TRUE)
openxlsx 包的做法略有不同。在这里,我将使用循环代替。
library(openxlsx)
output <- split(iris, iris$Species)
wb <- createWorkbook()
for (i in 1:length(output)) {
addWorksheet(wb, sheetName=names(output[i]))
writeData(wb, sheet=names(output[i]), x=output[[i]]) # Note [[]]
}
saveWorkbook(wb, "iris.xlsx", overwrite = TRUE)