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

R语言:按col列分组计算row列均值问题求助

解决按col分组计算row均值的问题

我来帮你搞定这个分组计算的需求~首先先修正下你代码里的小问题:生成df_num的时候,应该用df_value < 4而不是df < 4(因为你没定义df这个对象),正确的代码是:

df_value <- data.frame('a'=1:3,'b'=2:4,'c'=1:3,'d'=3:5)
df_num <- which(df_value < 4, arr.ind = TRUE)

接下来,你需要按df_num里的col列分组,计算对应row列的均值,这里给你两种常用的实现方法:

方法一:使用Base R的aggregate()函数

这是不需要额外安装包的原生方法,直接用aggregate指定分组变量和计算函数:

result <- aggregate(row ~ col, data = df_num, FUN = mean)
print(result)

运行后会得到:

col row
1   1 2.0
2   2 2.5
3   3 2.0
4   4 3.0

完全符合你期望的结果~

方法二:使用dplyr包(更直观的管道语法)

如果你习惯用tidyverse风格的代码,可以用dplyr的分组+汇总操作:
首先确保安装并加载dplyr:

install.packages("dplyr") # 第一次用需要安装
library(dplyr)

然后执行分组计算:

result <- df_num %>% 
  as.data.frame() %>% # 因为which返回的是矩阵,先转成数据框
  group_by(col) %>% 
  summarise(mean_row = mean(row))

print(result)

输出结果和上面一致:

# A tibble: 4 × 2
    col mean_row
  <int>    <dbl>
1     1      2  
2     2      2.5
3     3      2  
4     4      3  

解释下逻辑:df_num里的col是我们的分组依据,row是需要计算均值的变量,不管用哪种方法,核心都是按col分组后对row求均值,这样就能得到你要的各列对应的行号平均值啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:07:25