我们可以通过气缸对mtcars进行分组,并使用一些简单的代码汇总每加仑英里数.
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarise(avg = mean(mpg))
Run Code Online (Sandbox Code Playgroud)
这提供了如下所示的正确输出.
cyl avg
1 4 26.66364
2 6 19.74286
3 8 15.10000
Run Code Online (Sandbox Code Playgroud)
如果我恳请dplyr排除NA,我会得到一些奇怪的结果.
mtcars %>%
group_by(cyl) %>%
summarise(avg = mean(!is.na(mpg)))
Run Code Online (Sandbox Code Playgroud)
由于此数据集中没有NA,因此结果应与上述相同.但它平均所有的mpg都精确到"1".我的代码或dplyr中的错误有问题吗?
cyl avg
1 4 1
2 6 1
3 8 1
Run Code Online (Sandbox Code Playgroud)
我的实际数据集确实有一些NA,我只需要为此摘要排除,但表现出相同的行为.
你要这个:
mtcars %>%
group_by(cyl) %>%
summarise(avg = mean(mpg, na.rm = T))
# A tibble: 3 x 2
cyl avg
<dbl> <dbl>
1 4 26.66364
2 6 19.74286
3 8 15.10000
Run Code Online (Sandbox Code Playgroud)
现在,你正在返回一个logical向量!is.na(mpg).当你使用mean()逻辑向量时,它将被强制为1,而不是logical你想要的值.