【问题标题】:data.table R || sum specific column from list of data tables数据表 R ||汇总数据表列表中的特定列
【发布时间】:2021-02-05 22:16:12
【问题描述】:
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 出错了。

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

【问题讨论】:

    标签: r data.table reduce


    【解决方案1】:

    我们可以使用rbindlist 绑定list 元素,然后通过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
    

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 1970-01-01
      • 2020-12-03
      • 2020-08-22
      • 2018-07-12
      • 2017-07-28
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      相关资源
      最近更新 更多