R语言dplyr分组统计每月取消航班量仅返回总数量问题求助
错误原因
你在summarise函数中调用filter(flights, is.na(dep_time))时,直接引用了原始全量flights数据集,没有使用group_by之后的分组数据,因此每次统计的都是全数据集的总取消航班量,无法按月份分组统计。
修复方案
无需额外嵌套filter和count函数,直接在summarise中对当前分组内的dep_time空值计数即可,修复后代码如下:
library(nycflights13) library(dplyr) flights <- nycflights13::flights flights %>% select(arr_delay, month, dep_time) %>% group_by(month) %>% summarise( Mean = mean(arr_delay, na.rm = TRUE), canceled = sum(is.na(dep_time), na.rm = TRUE) )
如果你要保留原有写法的逻辑,只需要把filter的输入对象替换为当前管道传递的分组数据(用.指代)即可:
flights %>% select(arr_delay, month, dep_time) %>% group_by(month) %>% summarise( Mean = mean(arr_delay, na.rm = TRUE), canceled = count(filter(., is.na(dep_time)))$n )
运行上述代码后就能得到每个月对应的平均到达延误时长、当月取消航班数的正确统计结果。
内容的提问来源于stack exchange,提问作者Michael Visconti
相关产品推荐
相关产品推荐

