r - 获取 dplyr 管道结构中最常出现的因子水平

标签 r dplyr

我希望能够在使用 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/

相关文章:

R 结合使用 ifelse 和 eval 的行为

r - 如何按给定列中的值汇总 R 数据集?

R将数据帧列写入具有前导零的csv

r - 使用 bind_cols (r, dplyr) 时设置列名

r - 基于相邻列最大值的值

r - 在嵌套的 ifelse 语句中使用 any

r - 在 R 中将列转为行标题?

R 变异以计算组内出现的相对频率

r - 将函数与 dbplyr 中的现有 sql 翻译组合在一起的函数

R - 如何在保持分组的同时重新排列数据框中的行?