【问题标题】:R aggregating list items within a dataframe grouped by another columnR聚合由另一列分组的数据框中的列表项
【发布时间】:2022-07-04 22:51:15
【问题描述】:

我有一个如下所示的数据框 df:

df<-structure(list(hex = c(7L, 7L, 5L, 7L, 5L, 5L, 5L, 3L, 5L, 7L
), material_diff = list(c(0, 0, -1, 0, 0, 0), c(0, 0, -1, 0, 
0, 0), c(0, 0, -1, 0, 0, 0), c(0, 0, -1, 0, 0, 0), c(0, 0, -1, 
0, 0, 0), c(0, 0, -1, 0, 0, 0), c(0, 0, -1, 0, 0, 0), c(0, 0, 
0, 0, -0.166666666666667, 0), c(0, 0, -1, 0, 0, 0), c(0, 0, -1, 
0, 0, 0))), class = "data.frame", row.names = c(NA, -10L))

   hex                                                     material_diff
1    7                                                 0, 0, -1, 0, 0, 0
2    7                                                 0, 0, -1, 0, 0, 0
3    5                                                 0, 0, -1, 0, 0, 0
4    7                                                 0, 0, -1, 0, 0, 0
5    5                                                 0, 0, -1, 0, 0, 0
6    5                                                 0, 0, -1, 0, 0, 0
7    5                                                 0, 0, -1, 0, 0, 0
8    3 0.0000000, 0.0000000, 0.0000000, 0.0000000, -0.1666667, 0.0000000
9    5                                                 0, 0, -1, 0, 0, 0
10   7                                                 0, 0, -1, 0, 0, 0

我想对 material_diff 中的向量求和并按十六进制分组以返回以下内容:

   hex                                                     material_diff
1    3   0.0000000, 0.0000000, 0.0000000, 0.0000000, -0.1666667, 0.0000000
2    5                                                 0, 0, -5, 0, 0, 0
3    7                                                 0, 0, -4, 0, 0, 0

如何做到这一点?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以求助Reduce-

    library(dplyr)
    
    df %>%
      group_by(hex) %>%
      summarise(material_diff = list(Reduce(`+`, material_diff))) %>%
      data.frame() #for better viewing. 
    
    #  hex                                                     material_diff
    #1   3 0.0000000, 0.0000000, 0.0000000, 0.0000000, -0.1666667, 0.0000000
    #2   5                                                 0, 0, -5, 0, 0, 0
    #3   7                                                 0, 0, -4, 0, 0, 0
    

    【讨论】:

      猜你喜欢
      • 2018-03-21
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      相关资源
      最近更新 更多