我有这种数据框:
df<- data.frame(cluster=c('1','1','2','3','3','3'), class=c('A','B','C','B','B','C'))
我想获得每个群集(1,2,3),这个群体最常出现。如果是平局,获取信息也很好,例如类的组合(或者如果不可能只有NA)。 所以对于我的例子,我希望得到这样的结果:
cluster class.max
1 'A B' (or NA)
2 'C'
3 'B'
也许我应该使用aggregate()
但不知道如何。
答案 0 :(得分:3)
rank
有处理关系的方法:
aggregate(class~cluster,df,function(x) paste(names(table(x)[rank(-1*table(x),ties.method="min")==1]),collapse=" "))
cluster class
1 1 A B
2 2 C
3 3 B