作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我正在处理的数据
Sales <- data.frame(State = c("New York", "New Jersey", "Texas","New Mexico","California",
"Kansas","Florida","Alaska","Montana", "Maine"),
Units = c(455,453,125,135,135,568,451,125,215,314),
Sales = c("20000","12530","51110","54110","65000",
"58220","54612","45102","45896","12510"),
ManagerName = c("Chip","Kelly","Steve","Young","Troy",
"Aikman", "Chad","Pennington","Mike","Vick")
)
我的最终目标是为每个“州”创建 10 个不同的 excel 文件。
我知道我可以做类似的事情
#Seperate by State
library(dplyr)
NewYork <- Sales %>% filter(State == "New York")
#Save to excel
library(xlsx)
write.xlsx(NewYork, file="NewYork-Sales-November2020.xlsx",
sheetName="NewYork")
但问题是我有超过 50 行并且不希望有 50 个命令来按状态过滤,然后再有 50 个命令来编写 excel 文件。
有没有更有效的方法将每一行“状态”保存到不同的 excel 文件中?
最佳答案
以下是问题要求的,我已经用发布的数据对其进行了测试。
split
数据由 State
;工作表由 State
命名.
library(openxlsx)
sp <- split(Sales, Sales$State)
names(sp) <- ifelse(nchar(names(sp)) > 31, substr(names(sp), 1, 31), names(sp))
wb <- createWorkbook(creator = "FruityPebblePug")
lapply(seq_along(sp), function(i){
addWorksheet(wb, sheetName = names(sp)[[i]])
})
lapply(seq_along(sp), function(i){
writeData(wb, sheet = names(sp)[[i]], sp[[i]])
})
saveWorkbook(wb, "Sales-November2020.xlsx")
如 comments 中所述, 如果工作表名称有太多字符,超出 Excel 的 31 个字符限制,以下将工作表命名为 "State 1"
, "State 2"
等
sp <- split(Sales, Sales$State)
wb <- createWorkbook(creator = "FruityPebblePug")
lapply(seq_along(sp), function(i){
addWorksheet(wb, sheetName = paste("State", i))
})
lapply(seq_along(sp), function(i){
writeData(wb, sheet = paste("State", i), sp[[i]])
})
saveWorkbook(wb, "Sales-November2020_b.xlsx")
关于r - 如何将一个数据框逐行拆分成多个数据框,然后导出到excel? R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64701971/
我是一名优秀的程序员,十分优秀!