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 に答える