gpt4 book ai didi

r - 我的 aggregate() 输出和 tidyverse 输出之间的区别

转载 作者:行者123 更新时间:2023-12-04 14:49:33 25 4
gpt4 key购买 nike

我正在使用航类数据集。我尝试计算不同机场(起点)的平均到达和离开延迟。我用聚合函数试了一下:

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

关于r - 我的 aggregate() 输出和 tidyverse 输出之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69280662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com