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

R中按y分组计算x<10时z的均值并新增对应取值列的方法问询

R数据框按条件分组计算新增列实现方法

核心实现(tidyverse/dplyr 方案)

你需要在计算分组均值时仅筛选符合x<10条件的z值,再配合条件分支赋值即可实现需求,正确代码如下:

library(dplyr)
df %>% 
  group_by(y) %>% 
  mutate(new_col = ifelse(x < 10, mean(z[x < 10]), z)) %>% 
  ungroup() # 若后续不需要保留分组状态可加上该行

逻辑说明

  • 分组后计算均值时通过z[x < 10]筛选当前分组内所有满足x<10的z值再计算均值,不会纳入分组内x>=10的数值
  • 用ifelse做分支判断:x<10的行取分组条件均值,其余行直接取当前行的z值
  • 若存在某分组下无符合x<10的记录,均值计算会返回NA,可按需在mean函数中添加na.rm = TRUE参数处理

基础R实现方案(无需加载第三方包)

df$new_col <- ave(df$z, df$y, FUN = function(grp_z, grp_x) {
  ifelse(grp_x < 10, mean(grp_z[grp_x < 10]), grp_z)
}, grp_x = df$x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:24:03