我想按组汇总(总结)以下产品列表(见下文):
prods <- list("101.2000"=data.frame(1,2,3),
"102.2000"=data.frame(4,5,6),
"103.2000"=data.frame(7,8,9),
"104.2000"=data.frame(1,2,3),
"105.2000"=data.frame(4,5,6),
"106.2000"=data.frame(7,8,9),
"101.2001"=data.frame(1,2,3),
"102.2001"=data.frame(4,5,6),
"103.2001"=data.frame(7,8,9),
"104.2001"=data.frame(1,2,3),
"105.2001"=data.frame(4,5,6),
"106.2001"=data.frame(7,8,9))
test= list("100.2000"=data.frame(2,3,5),
"100.2001"=data.frame(4,5,6))
names <- c("A", "B", "C")
prods <- lapply(prods, function (x) {colnames(x) <- names; return(x)})
产品列表 (prods) 的每个元素都有产品编号和年份的名称组合(例如 101.2000 --> 101 = 产品编号,2000 = 年份)。并且组仅包含用于聚合的产品编号。
group1 <- c(101, 106)
group2 <- c(102, 104)
group3 <- c(105, 103)
我的预期结果显示了按年份汇总的产品组:
$group1.2000
A B C
1 8 10 12
$group2.2000
A B C
1 5 7 9
$group3.2000
A B C
1 11 13 15
$group1.2001
A B C
1 8 10 12
$group2.2001
A B C
1 5 7 9
$group3.2001
A B C
1 11 13 15
到目前为止,我尝试了这种方式:首先我分解了prods
转化为产品编号:
prodnames <- names(prods)
prodnames_sub <- gsub("\\..*.","", prodnames)
然后我尝试使用 lapply 进行聚合:
lapply(prods, function(x) aggregate( ... , FUN = sum)
不过我没有找到如何在聚合函数中实现之前的产品编号。有想法吗?谢谢