汇总字符变量

时间:2018-07-25 10:28:32

标签: r character aggregate

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

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)

但是没有用

1 个答案:

答案 0 :(得分:0)

此处可能需要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"
)