2

我有这种数据框:

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() 但不知道如何使用。

4

1 回答 1

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
于 2013-07-23T13:20:34.830 回答