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

R如何计算数据框每行中高于该行总均值的列的平均值

错误原因

你的代码运行失败的核心原因有两个:

  • apply(data, 1, ...) 执行时会将你后续新增的mn列也纳入每行的取值范围,而你计算时仅需要用到前三列的日期数值列
  • 匿名函数中x > data$mn的data$mn是包含所有行均值的长度为5的向量,而非当前行对应的均值,逻辑完全不匹配

正确实现代码

简洁一步版(无需提前生成mn列)

# 仅遍历前三列数值,每行先算总均值,再筛选大于总均值的数计算平均
data$mintensity <- apply(data[, 1:3], 1, function(row) {
  total_mean <- mean(row)
  mean(row[row > total_mean])
})

保留mn列版本

如果你需要单独存储每行总均值,可以拆分实现:

# 计算每行总均值
data$mn <- apply(data[, 1:3], 1, mean)
# 计算符合条件的均值
data$mintensity <- mapply(function(val_row, mn_row) {
  mean(val_row[val_row > mn_row])
}, as.data.frame(t(data[, 1:3])), data$mn)

最终输出结果

01-01-2018 02-01-2018 03-01-2018         mn mintensity
1        1.2       -0.1        3.4  1.5000000       3.40
2        3.1        2.4       -2.6  0.9666667       2.75
3        0.7        4.9       -1.8  1.2666667       4.90
4       -0.3       -3.3        0.1 -1.1666667      -0.10
5        2.0       -2.7        0.3 -0.1333333       1.15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:04