如何在没有使用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的情况下获得上述结果?
我们可以将条件创建为逻辑列,并使用它来按组子集'mpg'来获取 mean 值,类似地,'cnt'被计算为逻辑向量的 sum
mean
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'列的创建只是因为我们多次使用条件 .
1 回答
我们可以将条件创建为逻辑列,并使用它来按组子集'mpg'来获取
mean
值,类似地,'cnt'被计算为逻辑向量的sum
注意:'ind'列的创建只是因为我们多次使用条件 .