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

在R语言中按ID分组计算CODCOM众数并新增对应列的实现方法

R实现分组计算众数并新增列的方案

R基础包没有内置众数计算函数,我们先自定义一个轻量的众数函数,再按ID分组计算即可。针对你100万行的数据集,提供两种常用实现方案:

方案1:dplyr实现(适合熟悉tidyverse语法的用户)

# 加载依赖包
library(dplyr)

# 自定义众数函数:存在多个众数时默认取频率最高的第一个
get_mode <- function(x) {
  count_table <- table(x)
  as.integer(names(count_table)[which.max(count_table)])
}

# 按ID分组计算众数并新增NEW_COL列,your_data替换为你的数据框变量名
result <- your_data %>%
  group_by(ID) %>%
  mutate(NEW_COL = get_mode(CODCOM)) %>%
  ungroup()

方案2:data.table实现(推荐大数据量使用,100万行运行效率更高)

# 加载依赖包
library(data.table)

# 转换数据为data.table格式,your_data替换为你的数据框变量名
setDT(your_data)

# 自定义众数函数
get_mode <- function(x) {
  count_table <- table(x)
  as.integer(names(count_table)[which.max(count_table)])
}

# 按ID分组新增列,原地修改数据内存占用更低
your_data[, NEW_COL := get_mode(CODCOM), by = ID]

补充说明

  • 你给出的预期输出最后一行ID=323032的NEW_COL值为43属于笔误,按逻辑该分组仅1个CODCOM值21,众数应为21,上述代码会输出正确结果。
  • 如果业务场景中存在多个相同频率的众数,可自行调整get_mode函数的返回规则,比如返回所有众数拼接值等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:06:06