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

如何用dplyr按类型求和后除以重复次数计算均值?

解决分组计算均值的问题

嘿,其实你需求里的“求和后除以该类型的总出现次数”,本质就是计算每组的平均值,用dplyr可以很轻松实现,不用绕弯路手动计算,直接用内置的均值函数就好,我给你两种实现方式:

方式一:直接用mean()函数(最简洁)

直接在summarise里对value列调用mean(),这是最直接的写法:

library(dplyr)

# 先还原你的原始数据
d <- data.frame(type=c("rna","rna","rna"), value = c(1,2,3) )
d2 <- data.frame(type=c("dna","dna"), value = c(20,30) )
df <- rbind(d,d2)

# 分组计算均值
result <- df %>% 
  group_by(type) %>% 
  summarise(value = mean(value)) %>% 
  data.frame()

print(result)

运行这段代码后,输出正好是你想要的结果:

type value
1  dna    25
2  rna     2

方式二:手动实现求和/行数(如果你想明确逻辑)

如果你想手动写出“求和除以次数”的逻辑,也可以用n()函数获取每组的行数,再和求和结果做除法:

result <- df %>% 
  group_by(type) %>% 
  summarise(value = sum(value)/n()) %>% 
  data.frame()

这个结果和用mean()完全一致,因为mean()的底层逻辑就是这么计算的。

为啥你原来的代码只得到求和结果?

你之前用了summarise_all(sum),这个函数会对所有非分组列应用求和操作,所以自然只得到了每组的总和。把sum换成mean,或者像上面那样指定计算逻辑,就能得到你要的均值啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:05:15