首页 文章

没有过滤器或left_join的分组数据的条件计数和均值

提问于
浏览
1

如何在没有使用dplyr的过滤器的情况下通过分组数据计算条件计数和均值?我既不想使用过滤器缩小数据集,也不想使用left_join数据来获取原始大小(加长)的数据集 . 那可能吗?

这是一个案例:

mtcars%>%filter(cyl> 4,gear <5)%>%group_by(gear,carb,am)%>%mutate(avg_mpg = mean(mpg,na.rm = T),cnt = n())

如何在不使用filter或left_join的情况下获得上述结果?

1 回答

  • 1

    我们可以将条件创建为逻辑列,并使用它来按组子集'mpg'来获取 mean 值,类似地,'cnt'被计算为逻辑向量的 sum

    mtcars %>%
           mutate(ind = cyl > 4 & gear < 5) %>%
           group_by(gear, carb, am) %>%
           mutate(avg_mpg = mean(mpg[ind], na.rm= TRUE),
                  cnt = sum(ind)) %>%
           select(-ind)
    

    注意:'ind'列的创建只是因为我们多次使用条件 .

相关问题