我的数据库具有以下结构:
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)
但是没有用
答案 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"
)