R中使用dplyr处理nycflights数据时arrange排序结果异常问题
问题原因
你遇到的结果不一致问题核心是dplyr管道运算默认不会修改原始变量:你写的链式运算代码仅在控制台输出了临时计算结果,没有把运算后的结果重新赋值给worst_delay,因此调用View(worst_delay)时打开的还是运算前的原始数据。
修正代码
在管道语句开头添加赋值操作即可,同时建议在sum()中添加na.rm = TRUE参数避免缺失值导致计算结果为NA:
#Which plane has the worst on-time record? worst_delay <- worst_delay %>% group_by(tailnum) %>% select(tailnum,arr_delay,dep_delay) %>% mutate(sum_delay=sum(arr_delay,dep_delay, na.rm = TRUE)) %>% arrange(desc(sum_delay)) View(worst_delay)
优化提示:如果你需要每个飞机尾号仅输出一行汇总结果,可将
mutate替换为summarise,避免同一个尾号重复出现相同的总延误记录:worst_delay <- worst_delay %>% group_by(tailnum) %>% summarise( sum_delay = sum(arr_delay, dep_delay, na.rm = TRUE), .groups = "drop" ) %>% arrange(desc(sum_delay))
内容的提问来源于stack exchange,提问作者Shawn Hemelstrand
相关产品推荐
相关产品推荐

