gpt4 book ai didi

返回 r 中出现次数最多的字符值

转载 作者:行者123 更新时间:2023-12-04 00:57:46 25 4
gpt4 key购买 nike

我有:

df<-data.frame(group=c(1, 1, 1, 1, 2, 2, 2), 
char=c("a", "b", "z", "a", "c", "c", "b"),
want=c("a", "a", "a", "a", "c", "c", "c"))
df

group char want
1 1 a a
2 1 b a
3 1 z a
4 1 a a
5 2 c c
6 2 c c
7 2 b c

我想按组返回 char 变量中出现次数最多的值。如果有解决关系的方法(即,如果第 1 组中有两个 a 和两个 b 这么说),那也是理想的。

谢谢

最佳答案

我们可以使用 here 中的 Mode 函数要获得最频繁的值,按“组”进行分组,然后在“字符”列上应用该函数

library(dplyr)
Mode <- function(x) {
ux <- unique(x)
tabl <- tabulate(match(x, ux))
i1 <- tabl == max(tabl)
stopifnot(sum(i1) == 1)
toString(ux[i1])
}

df %>%
group_by(group) %>%
mutate(want = Mode(char))
# A tibble: 7 x 3
# Groups: group [2]
# group char want
# <dbl> <fct> <fct>
#1 1 a a
#2 1 b a
#3 1 z a
#4 1 a a
#5 2 c c
#6 2 c c
#7 2 b c

用关系测试

df$char[2] <- 'z'

df %>%
group_by(group) %>%
mutate(want = Mode(char))

Error: `mutate()` argument `want` errored.
ℹ `want` is `Mode(char)`.
ℹ The error occured in group 1: group = 1.
✖ sum(i1) == 1 is not TRUE

关于返回 r 中出现次数最多的字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60939673/

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