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

如何在R中基于单列值自动按条件生成新列

解决方案:按年份分组自动计算并填充列

dplyr 方法(推荐,适配你的现有代码风格)

利用group_by()按年份分组后,mutate()会自动为每组计算统计量并填充到该组的所有行,无需手动指定年份,不管年份数量多少都能自动处理:

set.seed(3)
c1 <- sample(x = c("2010","2011"), size = 10, replace = T)
c2 <- sample(x = c(1:5), size = 10, replace = T)
c3 <- sample(x = c(6:10), size = 10, replace = T)

dat <- data.frame(c1, c2, c3)

library(dplyr)
dat <- dat %>%
  group_by(c1) %>%
  mutate(
    d1 = min(c2),  # 对应年份c2列的最小值,自动填充到该年份所有行
    d2 = max(c3)   # 对应年份c3列的最大值,自动填充到该年份所有行
  ) %>%
  ungroup()  # 可选:取消分组,避免后续操作受分组状态影响

print(dat)

Base R 方法(无需加载额外包)

使用ave()函数按分组计算统计量,返回与原数据长度一致的结果,自动完成重复填充:

set.seed(3)
c1 <- sample(x = c("2010","2011"), size = 10, replace = T)
c2 <- sample(x = c(1:5), size = 10, replace = T)
c3 <- sample(x = c(6:10), size = 10, replace = T)

dat <- data.frame(c1, c2, c3)

dat$d1 <- ave(dat$c2, dat$c1, FUN = min)
dat$d2 <- ave(dat$c3, dat$c1, FUN = max)

print(dat)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:36:03