5

R のアイテムの多数決を計算する必要がありますが、これにアプローチする方法がわかりません。

アイテムと割り当てられたカテゴリを含むデータ フレームがあります。必要なのは、最も頻繁に割り当てられたカテゴリです。どうすればいいですか?

データ フレーム:

item   category
1      2
1      3
1      2
1      2
2      2
2      3
2      1
2      1

結果は次のようになります。

item   majority_vote
1      2
2      1
4

4 に答える 4

3

ワンライナー ( を使用plyr):

ddply(dt, .(item), function(x) which.max(tabulate(x$category)))
于 2013-06-20T04:47:04.540 に答える
1
 tdat <- tapply(dat$category, dat$item, function(vec) sort(table(vec), 
                                                 decreasing=TRUE)[1] )
 data.frame(item=rownames(tdat), plurality_vote=tdat)

  item plurality_vote
1    1              3
2    2              2

複数 (おそらく同数) を真の多数派と区別するには、より複雑な関数が必要になります。

于 2013-06-19T22:11:06.800 に答える
1

package のようにモードを計算する関数がある場合はprettyR、次を使用できますaggregate

require(prettyR)

aggregate(d$category, by=list(item=d$item), FUN=Mode)
#  item x
#1    1 2
#2    2 1
于 2013-06-20T01:31:30.340 に答える