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

如何用dplyr将除y2外的数值列替换为列均值?

使用dplyr替换指定列以外的数值列为列均值的最优方法

问题背景

给定如下数据框:

df <- data.frame(x = c("A","A","B","B"), y1 = c(1,2,3,4), y2=c(10,20,30,40), y3=c(1,4,10,40), y4 = c(1,0,0,0))

需求是将数据框中除y2外的所有数值列替换为该列的均值,期望输出:

x   y1   y2  y3     y4
A   2.5  10  13.75  0.25
A   2.5  20  13.75  0.25
B   2.5  30  13.75  0.25
B   2.5  40  13.75  0.25

解决方案

使用dplyr的mutate()结合across()函数可以高效实现需求,具体代码如下:

library(dplyr)

df_result <- df %>%
  mutate(across(where(is.numeric) & !matches("y2"), ~ mean(.x, na.rm = TRUE)))

代码说明

  • where(is.numeric):筛选所有数值类型的列
  • !matches("y2"):排除列名为y2的列
  • ~ mean(.x, na.rm = TRUE):对目标列计算均值,添加na.rm = TRUE是为了兼容含缺失值的场景,让代码更健壮

运行后即可得到符合预期的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:42:39