gpt4 book ai didi

r - 按组列出的最常见值(众数)

转载 作者:行者123 更新时间:2023-12-02 12:26:37 27 4
gpt4 key购买 nike

我正在尝试按组查找最常见的值。在以下示例数据框中:

df<-data.frame(a=c(1,1,1,1,2,2,2,3,3),b=c(2,2,1,2,3,3,1,1,2))  
> df
a b
1 1 2
2 1 2
3 1 1
4 1 2
5 2 3
6 2 3
7 2 1
8 3 1
9 3 2

我想添加一列“c”,当其值按“a”分组时,该列在“b”中出现次数最多。我想要以下输出:

> df  
a b c
1 1 2 2
2 1 2 2
3 1 1 2
4 1 2 2
5 2 3 3
6 2 3 3
7 2 1 3
8 3 1 1
9 3 2 1

我尝试使用 table 和 tapply 但没有得到正确的结果。有没有快速的方法来做到这一点?
谢谢!

最佳答案

根据 Davids 的评论,您的解决方案如下:

Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}

library(dplyr)
df %>% group_by(a) %>% mutate(c=Mode(b))

请注意,当 df$a3 时,对于平局,b 的众数为 1 .

关于r - 按组列出的最常见值(众数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29255473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com