奇怪的是,filter()的行为不符合预期

奇怪的是,filter()的行为不符合预期,r,filter,R,Filter,我参考《数据科学》一书中的程序来检查每天有多少航班起飞时间早于500次 案文如下: library(nycflights13) library(tidyverse) not_cancelled <- flights %>% filter(!is.na(dep_delay), !is.na(arr_delay)) not_cancelled %>% group_by(year, month, day) %>% summarise(n_early = su

我参考《数据科学》一书中的程序来检查每天有多少航班起飞时间早于500次

案文如下:

library(nycflights13)
library(tidyverse)
not_cancelled <- flights %>% 
  filter(!is.na(dep_delay), !is.na(arr_delay))

not_cancelled %>% 
  group_by(year, month, day) %>% 
  summarise(n_early = sum(dep_time < 500))

库(nycflights13)
图书馆(tidyverse)
未取消%
过滤器(!is.na(数据延迟),!is.na(arr\u延迟))
未取消%>%
分组单位(年、月、日)%>%
总结(n_early=总和(dep_时间<500))
->365 x 4

但是,另一种代码:

library(nycflights13)
library(tidyverse)
not_cancelled <- flights %>% 
  filter(!is.na(dep_delay), !is.na(arr_delay))

not_cancelled %>% 
  group_by(year, month, day) %>% 
  select(year:day, dep_time) %>%
  filter(dep_time < 500) %>%
  count()
库(nycflights13)
图书馆(tidyverse)
未取消%
过滤器(!is.na(数据延迟),!is.na(arr\u延迟))
未取消%>%
分组单位(年、月、日)%>%
选择(年:日,部门时间)%>%
过滤器(衰减时间<500)%>%
计数()
->不能产生相同的结果。相反,输出为348 x 4


我想不出原因。

问题是,第二个方法在产生结果之前删除了所有的零天。有17天是零计数的第一天,这说明了差异

library(nycflights13)
library(tidyverse)
not_cancelled <- flights %>% 
  filter(!is.na(dep_delay), !is.na(arr_delay))


tmp1 <- not_cancelled %>% 
  group_by(year, month, day) %>% 
  summarise(n_early = sum(dep_time < 500))
sum(tmp1$n_early == 0)
# [1] 17


tmp2 <- not_cancelled %>% 
  group_by(year, month, day) %>% 
  select(year:day, dep_time) %>%
  filter(dep_time < 500) %>%
  count()

sum(tmp2$n == 0)
# [1] 0
库(nycflights13)
图书馆(tidyverse)
未取消%
过滤器(!is.na(数据延迟),!is.na(arr\u延迟))
tmp1%
分组单位(年、月、日)%>%
总结(n_early=总和(dep_时间<500))
总和(tmp1$n_早期==0)
# [1] 17
tmp2%
分组单位(年、月、日)%>%
选择(年:日,部门时间)%>%
过滤器(衰减时间<500)%>%
计数()
总和(tmp2$n==0)
# [1] 0

非常感谢Dave,你真的帮了大忙