首页 > 解决方案 > 数据表 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 错误。

如何使用Reducelapply, mapply?我可以使用 for 循环,但这太天真了。抱歉,这些关键功能对我来说很难掌握。

标签: rdata.tablereduce

解决方案


我们可以使用rbindlistrbindlist元素,然后进行分组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

推荐阅读