我希望能够在使用 dplyr 的管道结构时找到数据集中某个因素中最常出现的级别。我正在尝试创建一个新变量,其中包含由另一个变量分组时的“模态”因子级别。
这是我正在寻找的示例:
df <- data.frame(cat = stringi::stri_rand_strings(100, 1, '[A-Z]'), num = floor(runif(100, min=0, max=500)))
df <- df %>%
dplyr::group_by(cat) %>%
dplyr::mutate(cat_mode = Mode(num))
其中“Mode”是我正在寻找的功能
最佳答案
使用table
来计算项目数,然后使用which.max
找出最常见的项目:
df %>%
group_by(cat) %>%
mutate(cat_mode = names(which.max(table(num)))) %>%
head()
# A tibble: 6 x 3
# Groups: cat [4]
# cat num cat_mode
# <fctr> <dbl> <chr>
#1 Q 305 138
#2 W 34.0 212
#3 R 53.0 53
#4 D 395 5
#5 W 212 212
#6 Q 417 138
# ...
关于r - 获取 dplyr 管道结构中最常出现的因子水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412079/