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

R语言按client_id分组复制最小which_year对应frequency到组内所有行

R实现分组取最小值对应值填充全组的方法

以下三种方案均可实现需求,核心逻辑均为按client_id分组后提取组内which_year最小值对应的frequency值,填充至组内所有行:

方法1:使用dplyr(tidyverse生态,可读性最高)

适合习惯tidyverse语法的场景,代码逻辑清晰易维护:

# 加载依赖包
library(dplyr)
# 计算新字段
result_df <- df %>%
  group_by(client_id) %>%
  mutate(frequency_start = frequency[which.min(which_year)]) %>%
  ungroup()

方法2:Base R实现,无需安装额外包

适合不想引入第三方依赖的场景:

df$frequency_start <- ave(seq(nrow(df)), df$client_id, FUN = function(row_idx) {
  df$frequency[row_idx][which.min(df$which_year[row_idx])]
})

方法3:使用data.table,适合百万级以上大数据量场景

运算速度远高于前两种方案,适合处理大规模数据集:

# 加载依赖包
library(data.table)
# 转换为data.table格式并计算新字段
setDT(df)
df[, frequency_start := frequency[which.min(which_year)], by = client_id]

内容的提问来源于stack exchange,提问作者Zofia Smoleń

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:06:04