You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言aggregate()与tidyverse计算航班延误均值差异原因问询

差异产生原因

这个差异确实是由NA值的处理逻辑不同导致的,核心区别在于两种写法删除缺失值的范围不一样:

  • base R的aggregate()使用公式语法(cbind(arr_delay,dep_delay) ~ origin)时,默认采用na.action = na.omit的逻辑:只要行内参与公式计算的arr_delay、dep_delay任意一列存在NA,整行都会被从计算中剔除,算两个均值的时候用的是完全相同的、没有任何缺失值的行子集。
  • 你写的tidyverse代码中,summarise内为每个mean()单独配置了na.rm = TRUE,此时删除缺失值的逻辑是单列独立的:计算arr_delay均值时仅剔除arr_delay为NA的行(哪怕对应行的dep_delay是NA也会纳入计算),计算dep_delay均值时仅剔除dep_delay为NA的行,两个均值计算用到的行子集范围不一样,最终结果自然和aggregate的输出有微小差异。

验证方法

你可以先把数据集过滤为arr_delay和dep_delay都非NA的子集,再用两种方法计算:

flights_complete <- flights %>% filter(!is.na(arr_delay), !is.na(dep_delay))

之后在flights_complete上运行你原来的两段代码,输出结果会完全一致。


内容的提问来源于stack exchange,提问作者Wutruvic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:48:03