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
相关产品推荐
相关产品推荐

