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

R语言计算含指定关键词的列(排除同关键词最后一列)的行均值

R 行均值计算修正方案

错误原因

你使用的mutate_at()是列向的批量计算函数,会对每一个选中的列单独执行计算逻辑,因此会为每个匹配列生成独立的均值列,无法实现多列按行汇总计算均值的需求。

修正代码(适配dplyr 1.0及以上版本,官方推荐写法)

library(dplyr)

# 构造示例数据
df <- data.frame( ABC_1 = runif(3),
                  ABC_2 = runif(3),
                  ABC_3 = runif(3),
                  ABC_4 = runif(3) )

# 计算逻辑
df_result <- df %>%
  rowwise() %>% # 按行分组
  mutate(
    # 提取所有含ABC的列中最后一列的数值作为max列
    max = last(c_across(contains("ABC"))),
    # 提取所有含ABC的列、排除最后1列后,计算当前行的均值
    row_mean = mean(c_across(head(contains("ABC"), -1)), na.rm = TRUE)
  ) %>%
  ungroup() # 取消行分组,避免影响后续数据操作

输出示例

# A tibble: 3 × 6
  ABC_1 ABC_2 ABC_3 ABC_4   max row_mean
  <dbl> <dbl> <dbl> <dbl> <dbl>    <dbl>
1 0.266 0.796 0.388 0.811 0.811    0.483
2 0.401 0.332 0.976 0.166 0.166    0.570
3 0.567 0.538 0.486 0.541 0.541    0.530

逻辑说明

  • c_across()会在按行分组的前提下,将选中的多列合并为一个一维向量,作为后续mean()、max()等聚合函数的输入,最终得到每行的汇总结果
  • head(contains("ABC"), -1)代表选中所有列名包含ABC的列,再排除最后1个匹配的列,完全符合筛选需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:11