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

R语言dataframe新增列:按Col1分组取Col2最大值实现类vlookup匹配

R实现按分组取Col2最大值填充Output列方案

先构造和你需求一致的示例数据方便测试:

df <- data.frame(
  Col1 = c(1, 1, 12, 12),
  Col2 = c(21, 20, 20, 19)
)

以下三种常用实现方案均可直接得到目标结果:

方法1:dplyr包实现(tidyverse生态常用写法)

核心逻辑是按Col1分组后,将每组Col2的最大值填充到组内所有行:

library(dplyr)
df_result <- df %>%
  group_by(Col1) %>%
  mutate(Output = max(Col2)) %>%
  ungroup()

# 如果Col2存在缺失值,可修改为max(Col2, na.rm = TRUE)忽略缺失值计算

方法2:Base R原生实现(无需安装额外依赖包)

用ave函数直接按分组计算聚合值,返回和原数据长度完全匹配的向量:

df$Output <- ave(df$Col2, df$Col1, FUN = max)

方法3:data.table实现(适合超大数据量,性能最优)

library(data.table)
setDT(df)
df[, Output := max(Col2), by = Col1]

三种方案最终输出均符合预期:

Col1 Col2 Output
1    1   21     21
2    1   20     21
3   12   20     20
4   12   19     20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:54:05