r - 数据表 R || 汇总数据表列表中的特定列
问题描述
library(data.table)
dt_store<-list()
A <- data.table(a = paste0("gid",1:4), b = paste0("IID",12:15),value=seq(from=1, to=4))
B <- data.table(a = paste0("gid",1:4), b = paste0("IID",12:15),value=seq(from=11, to=14))
C <- data.table(a = paste0("gid",1:4), b = paste0("IID",12:15),value=seq(from=21, to=24))
dt_store[[1]]<-A
dt_store[[2]]<-B
dt_store[[3]]<-C
我想求和/添加列value
。列表中的每个 data.table 具有相同的行数和相同的列名。该列b
是唯一的。列中可以有重复项a
我想得到最终输出为:
a b final_sum
gid1 IID12 33
gid2 IID13 36
gid3 IID14 39
gid4 IID15 42
Reduce("+",lapply(dt_store,value))
#this 错误。
如何使用Reduce
或lapply
, mapply
?我可以使用 for 循环,但这太天真了。抱歉,这些关键功能对我来说很难掌握。
解决方案
我们可以使用rbindlist
rbindlist
元素,然后进行分组sum
library(data.table)
rbindlist(dt_store)[, .(final_sum = sum(value)), .(a, b)]
-输出
# a b final_sum
#1: gid1 IID12 33
#2: gid2 IID13 36
#3: gid3 IID14 39
#4: gid4 IID15 42
推荐阅读
- laravel - Laravel - 尝试保存数据时插入语句中的列发生变化
- angular-material - AuthGuard 防止 Angular Material 完全加载
- ruby-on-rails - 当你删除一个表时,Rails AR 对象会发生什么?
- java - Android to Firebase 在上传之前缩小/压缩/调整图像大小
- performance - Sandy Bridge CPU 上的二级缓存带宽
- javascript - 如何在 iPhone 上使用 onclick
- mysql - 计算每行的唯一值(在索引轴上,而不是按列)
- python - CSV Writer 写入重复行
- php - Sqlsrv dll does not properly load on IIS
- machine-learning - 线性回归的梯度下降无法正常工作 beta 参数被初始化为零或一