这个问题已经有答案了:
Select the row with the maximum value in each group(19个回答)
How to select the rows with maximum values in each group with dplyr? [duplicate](6个回答)
4年前关闭.
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
只是为了直观地说明问题。
3条答案
按热度按时间lrl1mhuk1#
关键是开始按
a
和b
分组以计算频率,然后只取每组a
中最频繁的频率,例如:字符串
当然,还有其他方法,所以这只是一个可能的“关键”。
dy1byipe2#
其他答案忽略了捆绑频率
什么对我有用:
字符串
7gcisfzg3#
by()
a
的每个值,创建b
的table()
,并提取table()
中最大条目的names()
:字符串
您可以将其 Package 在
as.table()
中以获得更漂亮的输出,尽管它仍然不完全符合您想要的结果:型