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

如何在R语言数据框中统计各列高于列均值的数值数量?

统计数据框各列高于列均值的数值数量

针对你给出的示例数据,这里有两种简单高效的方法来实现需求:

首先先重现你的数据:

a <- c(1,2,3)
b <- c(4,5,6)
c <- c(7,8,9)
df <- data.frame(a,b,c)

方法1:基础R的apply()函数

这是最直接的基础R解决方案,不需要额外安装包:

apply(df, 2, function(x) sum(x > mean(x)))
  • apply(df, 2, ...) 中的2表示按列进行操作(如果是1就是按行)
  • 匿名函数function(x)接收每一列作为输入x,先计算该列的均值mean(x),然后判断每个元素是否大于均值(得到逻辑向量),最后用sum()统计TRUE的数量(因为逻辑值在R中TRUE=1,FALSE=0)

运行后会得到结果:

a b c 
1 1 1 

和你的预期一致,每列都有1个数值高于各自的均值。

方法2:tidyverse风格(使用dplyr包)

如果你习惯用tidyverse生态的工具,推荐用dplyr的across()函数,代码更具可读性:
首先确保你已经安装并加载了dplyr:

# 安装(首次使用时)
install.packages("dplyr")
# 加载包
library(dplyr)

然后运行统计代码:

df %>% 
  summarise(across(everything(), ~sum(.x > mean(.x))))
  • across(everything(), ...) 表示对数据框的所有列应用后续操作
  • ~sum(.x > mean(.x)) 是公式风格的简写,.x代表当前处理的列,逻辑和基础R方法一致

运行后会返回一个数据框格式的结果:

a b c
1 1 1 1

内容的提问来源于stack exchange,提问作者Luís Correia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:18:08