我的 aggregate() 输出和 tidyverse 输出之间的区别
Difference between my aggregate() output and tidyverse output
我正在使用航班数据集。我尝试计算不同机场(起点)的平均到达和离开延迟。
我用聚合函数试了一下:
average_delay <- aggregate(cbind(arr_delay,dep_delay) ~ origin, FUN = mean, data = flights)
print(average_delay, digits = 3)
之后我也用 tidyverse 试了一下:
library(tidyverse)
average_delay_tidy = flights %>%
group_by(origin) %>%
summarise(arr_delay = mean(arr_delay, na.rm = TRUE),
dep_delay = mean(dep_delay, na.rm = TRUE)) %>%
mutate_if(is.numeric, round, digits = 3) %>%
print
但是我得到了不同的输出:
合计:
|origin|arr_delay |dep_delay |
:------|:--------:|:--------:|
|EWR | 9.56 | **15.0** |
|JFK | 5.85 | **12.0** |
|LGA | 6.11 | 10.3 |
Tidyverse:
<chr> <dbl> <dbl>
|origin|arr_delay |dep_delay |
:------|:--------:|:--------:|
|EWR | 9.56 | **15.1** |
|JFK | 5.85 | **12.1** |
|LGA | 6.11 | 10.3 |
德差异很小,但是,我不明白怎么可能?
有人可以向我解释为什么这些输出不同吗?
是因为 NA 值吗?
提前致谢!
差别很小,似乎与四舍五入有关,因为 tibble
为显示做了一些打印格式,但在 aggregate
中,如果有 NA,请指定 na.action
参数,默认情况下是 na.omit
即,如果该行中只有一个 NA 元素,它将完全删除该行。将其更改为 NULL
aggregate(cbind(arr_delay,dep_delay) ~ origin, FUN = mean,
na.rm = TRUE, data = flights,
na.action = NULL)
-输出
origin arr_delay dep_delay
1 EWR 9.107055 15.10795
2 JFK 5.551481 12.11216
3 LGA 5.783488 10.34688
确认是否有NA
个元素
colSums(is.na(flights[c('arr_delay', 'dep_delay')]))
arr_delay dep_delay
9430 8255
我正在使用航班数据集。我尝试计算不同机场(起点)的平均到达和离开延迟。 我用聚合函数试了一下:
average_delay <- aggregate(cbind(arr_delay,dep_delay) ~ origin, FUN = mean, data = flights)
print(average_delay, digits = 3)
之后我也用 tidyverse 试了一下:
library(tidyverse)
average_delay_tidy = flights %>%
group_by(origin) %>%
summarise(arr_delay = mean(arr_delay, na.rm = TRUE),
dep_delay = mean(dep_delay, na.rm = TRUE)) %>%
mutate_if(is.numeric, round, digits = 3) %>%
print
但是我得到了不同的输出:
合计:
|origin|arr_delay |dep_delay |
:------|:--------:|:--------:|
|EWR | 9.56 | **15.0** |
|JFK | 5.85 | **12.0** |
|LGA | 6.11 | 10.3 |
Tidyverse:
<chr> <dbl> <dbl>
|origin|arr_delay |dep_delay |
:------|:--------:|:--------:|
|EWR | 9.56 | **15.1** |
|JFK | 5.85 | **12.1** |
|LGA | 6.11 | 10.3 |
德差异很小,但是,我不明白怎么可能? 有人可以向我解释为什么这些输出不同吗? 是因为 NA 值吗?
提前致谢!
差别很小,似乎与四舍五入有关,因为 tibble
为显示做了一些打印格式,但在 aggregate
中,如果有 NA,请指定 na.action
参数,默认情况下是 na.omit
即,如果该行中只有一个 NA 元素,它将完全删除该行。将其更改为 NULL
aggregate(cbind(arr_delay,dep_delay) ~ origin, FUN = mean,
na.rm = TRUE, data = flights,
na.action = NULL)
-输出
origin arr_delay dep_delay
1 EWR 9.107055 15.10795
2 JFK 5.551481 12.11216
3 LGA 5.783488 10.34688
确认是否有NA
个元素
colSums(is.na(flights[c('arr_delay', 'dep_delay')]))
arr_delay dep_delay
9430 8255