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

如何在R语言中比较行内单元格与该行均值并统计符合条件的数量

补充后的完整R代码

方法一:基于apply逐行处理

和原代码逻辑延续性更强,用apply逐行完成比较与求和:

a<-c(1, 94, 19, 62, 20, 74, 20, 35, 52, 78)
b<-c(22, 7, 70, 25, 57, 100, 25, 45, 26, 34)
c<-c(28, 97,69, 76, 4, 72, 25, 8, 35, 72)
d<-c(19, 18, 7, 26, 59, 88, 33, 100, 44, 59)

data<-data.frame(a, b, c, d)
data$mean <- apply(data, 1, mean)
# 补充部分:逐行比较元素与该行均值,大于记1后求和
data$comparison <- apply(data[, c("a", "b", "c", "d")], 1, function(x) sum(x > data$mean[which(row(data) == row(x))]))

方法二:矢量化操作(更高效简洁)

用R内置矢量化函数替代循环类操作,代码更简洁且运行效率更高:

a<-c(1, 94, 19, 62, 20, 74, 20, 35, 52, 78)
b<-c(22, 7, 70, 25, 57, 100, 25, 45, 26, 34)
c<-c(28, 97,69, 76, 4, 72, 25, 8, 35, 72)
d<-c(19, 18, 7, 26, 59, 88, 33, 100, 44, 59)

data<-data.frame(a, b, c, d)
data$mean <- rowMeans(data) # 用rowMeans替代apply计算行均值,效率更高
# 矢量化比较:每行元素与对应均值比较生成布尔矩阵,转整数后按行求和
data$comparison <- rowSums(data[, 1:4] > data$mean)

代码说明

  • rowMeans(data):专门计算数据框行均值的函数,比apply(data,1,mean)更高效
  • data[,1:4] > data$mean:利用R的广播特性,将每行4个元素与该行均值逐一比较,生成TRUE/FALSE矩阵(R中TRUE等价于1,FALSE等价于0)
  • rowSums():直接对每行的0-1值求和,得到每行大于均值的元素个数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:45:56