我有一个包含两个不同组及其值的数据集,如下所示:
example <- data.frame('Group' = c('building 1', 'building 1',
'building 2', 'building 2'),
'Subgroup' = c('Active','Inactive','Active','Inactive'),
'Value' = c('abc','def','ghi','jkl'))
我知道我可以使用lapply为每个“建筑物”输出工作簿:
buildings <- split(example, example$Group)
lapply(1:length(buildings),
function(x) write.xlsx(buildings[[x]],
file = paste0(names(buildings[x]), '.xlsx'),
row.names = FALSE))
同样,下面是在一个工作簿中基于一列创建多个工作表的代码:
activity <- split(example, example$Subgroup)
lapply(1:length(activity),
function(x) write.xlsx(activity[[x]], file = 'All values.xlsx',
sheetName = paste0(names(activity[x])),
append = TRUE, row.names = FALSE))
我的问题是,R中是否有一种方法可以将这些组合(或以另一种方式)以按组创建单独的工作簿,并按子组创建多个工作表?我想要的是用于Building 1的文件,该文件有2张纸:有效和无效。
我修改您的代码,如下所示。因为openxlsx::write.xlsx()
将自动使用命名列表的名称(例如)作为工作activity
表的名称。您唯一要做的就是buildings
在lapply()
函数中拆分in 。
example <- data.frame('Group' = c('building 1', 'building 1', 'building 2', 'building 2'),
'Subgroup' = c('Active','Inactive','Active','Inactive'),
'Value' = c('abc','def','ghi','jkl'))
buildings <- split(example, example$Group)
lapply(seq_along(buildings),
function(x) {
activity <- split(buildings[[x]], buildings[[x]]$Subgroup)
openxlsx::write.xlsx(
activity,
file = paste0(names(buildings[x]), '.xlsx'),
row.names = FALSE
)
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句