【问题标题】:Calculate average by group based on filter criteria根据过滤条件按组计算平均值
【发布时间】:2019-10-23 19:13:02
【问题描述】:

为新手问题道歉,仍然掌握 DPLYR(和一般的 R)的窍门。

我有以下数据集,我正在尝试计算出每个超过 1 个条目的区域组的平均评分。

Area    Rating
UK      5.256
Ireland 6.1465
Canada  6.1452 
USA     6.14
Ireland 4.258
USA     3.154

我预期的返回数据是:

Area    Count    Average_Rating 
Ireland 2        5.20255
USA     2        4.647

我已经尝试了以下代码,但当我尝试执行“计数”列时似乎正在下降(它返回所有区域的平均值)

df %>%
 group_by (Area) %>%
 mutate (count =n()) %>%
 summarise (mean = mean(Average_Rating)) %>%
 arrange(desc(mean))

我试过玩弄动词的顺序,但没有成功。非常感谢任何帮助!

【问题讨论】:

标签: r dplyr


【解决方案1】:

group_by 步骤之后我们需要一个filter

library(dplyr)
df1 %>%
   group_by(Area) %>%
   filter(n() > 1) %>%
   summarise(Count = n(), Average_Rating = mean(Rating)) %>%
   arrange(desc(Average_Rating))
# A tibble: 2 x 3
#  Area    Count Average_Rating
#  <chr>   <int>          <dbl>
#1 Ireland     2           5.20
#2 USA         2           4.65

数据

df1 <- structure(list(Area = c("UK", "Ireland", "Canada", "USA", "Ireland", 
"USA"), Rating = c(5.256, 6.1465, 6.1452, 6.14, 4.258, 3.154)), 
class = "data.frame", row.names = c(NA, 
-6L))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多