【问题标题】:function to produce list of elements by group (R) [duplicate]按组(R)生成元素列表的函数[重复]
【发布时间】:2018-06-06 13:08:01
【问题描述】:

我有短暂的健忘症。我记得有一个 R 函数允许在聚合后获取组中的元素列表。 为了更清楚,从这里开始:

DT<-data.table(x=rep(c("cool","uncool"),each=3),group=c(1,1,2,2,3,3))

这给了:

    x    group
   cool     1
   cool     1
   cool     2
 uncool     2
 uncool     3
 uncool     3

我想结束:

 x      group
cool    1,1,2
uncool  2,3,3

我以前用过那个功能,但现在想不起来了。任何人都可以帮忙吗? 谢谢

【问题讨论】:

    标签: r list data.table


    【解决方案1】:

    选项 1

    使用aggregate

    aggregate(group ~ x, DT, toString)
    #       x   group
    #1   cool 1, 1, 2
    #2 uncool 2, 3, 3
    

    aggregate(group ~ x, DT, paste0, collapse = ",")
    #       x group
    #1   cool 1,1,2
    #2 uncool 2,3,3
    

    选项 2

    data.table 方式

    DT[, .(group = toString(group)), by = x]
    #    x       group
    #1:   cool 1, 1, 2
    #2: uncool 2, 3, 3
    

    DT[, .(group = paste0(group, collapse = ",")), by = x]
    #        x group
    #1:   cool 1,1,2
    #2: uncool 2,3,3
    

    【讨论】:

    • 它有效,谢谢!但这不是我使用的那个。我认为该函数包括方括号,例如“[”。
    • @LaMachineInfernale 我已经添加了data.table 解决方案,请看一下;也许这就是你所追求的?
    【解决方案2】:

    这是一个使用tidyverse的选项

    library(tidyverse)
    DT %>%
      group_by(x) %>%
      summarise(group = toString(group))
    

    【讨论】:

      猜你喜欢
      • 2014-08-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 2018-03-26
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多