各グループの最も頻繁な文字列値を返す [重複] 質問する

各グループの最も頻繁な文字列値を返す [重複] 質問する
a <- c(rep(1:2,3))
b <- c("A","A","B","B","B","B")
df <- data.frame(a,b)

> str(b)
chr [1:6] "A" "A" "B" "B" "B" "B"

  a b
1 1 A
2 2 A
3 1 B
4 2 B
5 1 B
6 2 B

変数でグループ化しa、最も頻繁に発生する値を返したいb

私が望む結果は次のようになります

  a b
1 1 B
2 2 B

それはdplyr次のようなものでしょう

df %>% group_by(a) %>% summarize (b = most.frequent(b))

dplyr問題を視覚化するためにのみ言及しました。

ベストアンサー1

重要なのは、 と の両方でグループ化を開始して頻度を計算し、次に のグループごとに最も頻度の高いものだけを取得することですabたとえば、a次のようになります。

df %>% 
  count(a, b) %>%
  slice(which.max(n))

Source: local data frame [2 x 3]
Groups: a

  a b n
1 1 B 2
2 2 B 2

もちろん、他のアプローチもあるため、これは 1 つの可能な「鍵」にすぎません。

おすすめ記事