【问题标题】:Aggregate character variables聚合字符变量
【发布时间】:2018-07-25 10:28:32
【问题描述】:

我的数据库具有以下结构:

ZIP Category
1   Rouge
1   Vert
1   Rouge
2   Violet
2   Rouge
2   Noir
3   Vert
3   Violet
4   Rose

从中,我想创建如下数据库

ZIP Category               Times
1   Rouge,vert,rouge         3
2   Violet,rouge,noir        3
3   Vert,violet              2
4   rose                     1

我尝试了聚合函数:

attach(data)
aggdata <-aggregate(category, by=list(zip), FUN=sum, na.rm=TRUE)

但是没用

【问题讨论】:

    标签: r character aggregate


    【解决方案1】:

    这里可能需要toString() 函数:

    attach(dat)
    aggregate(Category, by=list(ZIP), FUN=toString, na.rm=TRUE)
    
      Group.1                   x
    1       1  Rouge, Vert, Rouge
    2       2 Violet, Rouge, Noir
    3       3        Vert, Violet
    4       4                Rose
    

    请注意,R 取决于大小写。

    但是,我首选的方法是使用 data.table 进行多个聚合。

    library(data.table)
    setDT(dat)[, .(Category = toString(Category), Times = .N), by = ZIP]
    
       ZIP            Category Times
    1:   1  Rouge, Vert, Rouge     3
    2:   2 Violet, Rouge, Noir     3
    3:   3        Vert, Violet     2
    4:   4                Rose     1
    

    数据

    library(data.table)
    dat <- fread(
      "ZIP Category
    1   Rouge
    1   Vert
    1   Rouge
    2   Violet
    2   Rouge
    2   Noir
    3   Vert
    3   Violet
    4   Rose"
    )
    

    【讨论】:

    • 非常感谢,它与 data.table 完美配合!
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多