You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言按行计算众数:并列/无众数场景取Method1值

问题原因

原有自定义众数函数存在两处逻辑缺陷:

  • 对频数统计结果排序时,同频数值会按数值大小升序排列,默认返回排序后第一位的更小值,导致并列最高频场景返回结果不符合要求
  • 未对「所有值无重复、不存在有效众数」的场景做兼容,直接返回NA,未按要求取Method1列值兜底
修正代码

只需要修改ModeFunc的判断逻辑,两种异常场景(无重复值、多值并列最高频)直接取传入向量的第一个元素(行向计算时传入向量的第一位就是Method1的取值),仅当存在唯一最高频值时返回真实众数:

database <- structure(list(Alternatives = c(3, 4, 5, 6, 7, 8, 9, 10, 11, 12), 
                         Method1 = c(1L, 10L, 7L, 8L, 9L, 6L, 5L, 3L, 4L, 2L), Method2 = c(1L, 
                                                                                           8L, 6L, 7L, 10L, 9L, 4L, 2L, 5L, 3L), Method3 = c(1L, 
                                                                                                                                             10L, 7L, 8L, 9L, 6L, 4L, 2L, 3L, 5L), Method4 = c(1L, 
                                                                                                                                                                                               9L, 6L, 7L, 10L, 8L, 5L, 3L, 2L, 4L)), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                                                          10L))

ModeFunc <- function(Vec) {
  freq_tab <- table(Vec)
  max_freq <- max(freq_tab)
  # 提取所有最高频的候选值
  valid_modes <- as.numeric(names(freq_tab[freq_tab == max_freq]))
  # 异常场景兜底:无重复值/多值并列,返回第一个元素(即Method1值)
  if (max_freq == 1 | length(valid_modes) > 1) {
    return(Vec[1])
  }
  # 正常场景返回唯一众数
  return(valid_modes[1])
}


output <- database |> rowwise() |> 
  mutate(Mode = ModeFunc(c_across(Method1:Method4))) |> 
  data.frame()
运行结果

执行后输出完全匹配预期:

Alternatives Method1 Method2 Method3 Method4 Mode
1             3       1       1       1       1    1
2             4      10       8      10       9   10
3             5       7       6       7       6    7
4             6       8       7       8       7    8
5             7       9      10       9      10    9
6             8       6       9       6       8    6
7             9       5       4       4       5    5
8            10       3       2       2       3    3
9            11       4       5       3       2    4
10           12       2       3       5       4    2

内容的提问来源于stack exchange,提问作者Antonio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:57:14