R中的聚合平均值

Posted

技术标签:

【中文标题】R中的聚合平均值【英文标题】:Aggregate mean in R 【发布时间】:2021-08-12 23:40:56 【问题描述】:

我正在尝试查看 按眼睛颜色分组的身高平均值 的字符,在他们的名字中有一个数字。 我用聚合尝试过,但我无法找出解决方案

sw %>%
  filter(grepl('[0-9]',name))%>%
     aggregate(height~eye_color,mean)%>%
        setNames(c("Eye color","Mean"))

【问题讨论】:

Pipe 和 filter() 表示您正在使用 dplyr。为什么不使用 group_by() 和 summarise()? 是的,我也试过了,但还是不知道怎么做 如果您想要完整的答案,请提供可重现的示例。但简而言之 group_by(Eyecolor) %>% summarise(new_name = mean(height)) 注意 Eyecolor 必须没有空格 好吧,我知道了。谢谢! 【参考方案1】:

如果我们想使用base R (R 4.1.0)

sw |>
    subset(grepl('[0-9]', name)) |>
    \(dat) aggregate(cbind(Mean = height) ~ eye_color, data = dat, mean)()

-输出

#  eye_color Mean
#1       red  131
#2 red, blue   96
#3    yellow  167

数据

data(starwars)
sw <- starwars

【讨论】:

第一个答案(我见过)使用 R-4.1 的 |&gt; 和 anon-func \(dat) ..,很好。 如果有疑问,starwarsdplyr 包中【参考方案2】:

dplyr 解决方案:

library(dplyr)

starwars %>%
  filter(grepl('[0-9]',name)) %>% 
  group_by(eye_color) %>% 
  summarise(mean = mean(height))

输出:

  eye_color  mean
* <chr>     <dbl>
1 black        NA
2 red         131
3 red, blue    96
4 yellow      167

【讨论】:

以上是关于R中的聚合平均值的主要内容,如果未能解决你的问题,请参考以下文章

R - 对连续变量标题进行分组,将分类变量因子作为行并聚合为最小值、最大值、平均值

有没有办法使用聚合命令按组计算不对称平均值(例如从百分位数 0.05 到 0.5)? R-工作室

R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法data.tabledplyr等方案计算分组均值并添加到可视化结果中

如何从 sql 中的 2 个表中按组聚合和计算平均值?

R语言dplyr包获取dataframe分组聚合汇总统计值实战(group_by() and summarize() ):均值中位数分位数IQRMADcountunique

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用mean函数计算每个分组中的所有数值变量的聚合平均值