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

如何使用dplyr将选中列的所有值替换为x_i = x_max - x_i计算结果

单列实现方案

直接在mutate中对目标列做向量化运算即可,不需要调用replace,R的向量运算会自动将公式应用到该列的每一行:

df1 <- df %>% 
  # 若确认列中无缺失值可去掉na.rm = TRUE参数
  mutate(column1 = max(column1, na.rm = TRUE) - column1)
多列批量实现方案

用dplyr 1.0.0及以上版本支持的across()函数即可实现同一句代码批量处理多列,支持多种列选择规则:

  • 手动指定要转换的列名
df1 <- df %>%
  mutate(
    # 把c(列1,列2,列3)替换为你要处理的实际列名即可
    across(c(column1, column2, column3), ~ max(.x, na.rm = TRUE) - .x)
  )
  • 自动匹配所有数值型列做转换
df1 <- df %>%
  mutate(
    across(where(is.numeric), ~ max(.x, na.rm = TRUE) - .x)
  )
  • 按列位置选择转换范围,比如处理第2到第6列:
df1 <- df %>%
  mutate(
    across(2:6, ~ max(.x, na.rm = TRUE) - .x)
  )

如果需要保留原始列,只新增转换后的列,可以添加.names参数指定新列命名规则,示例如下:

df1 <- df %>%
  mutate(
    across(c(column1, column2), ~ max(.x, na.rm = TRUE) - .x,
           .names = "{.col}_max_reverse")
  )

运行后会新增column1_max_reverse、column2_max_reverse两列存储转换结果,原有列数据保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:39:00