2. 本题使用数据集 nycflights13::flights (1) 请首先剔除数据中实际出发时间(dep_time)缺失的观测值,然后生成一个新的变量 dep_interval,用来将数据中的实际出发时间分为上午(6:01‐ 12:00)、下午(12:01‐18:00)、晚上(18:01‐24:00)和凌晨(0:01‐6:00)四组,将每一年每一月每一天内每个dep_interval 分组(year, month, day, dep_interval),计算每一组的平均到达延误时间和到达延误的方差,以及到达的机场数量(注意:相同机场不能重复计算)(20’) (2) 选取平均到达延误在 30 分钟以内同时平均到达机场数据不低于 50 个的小组,并按照平均到达延误由大到小排列(5’)
时间: 2023-06-25 17:07:51 浏览: 90
首先,我们需要加载数据集 nycflights13::flights,并剔除实际出发时间(dep_time)缺失的观测值。
```R
library(nycflights13)
library(dplyr)
flights <- flights %>%
filter(!is.na(dep_time))
```
接着,我们可以创建一个新的变量 dep_interval,用来将数据中的实际出发时间分为上午(6:01‐12:00)、下午(12:01‐18:00)、晚上(18:01‐24:00)和凌晨(0:01‐6:00)四组,并将每一年每一月每一天内每个 dep_interval 分组(year, month, day, dep_interval),计算每一组的平均到达延误时间和到达延误的方差,以及到达的机场数量(注意:相同机场不能重复计算)。
```R
flights <- flights %>%
mutate(dep_interval = case_when(
dep_time >= 601 & dep_time <= 1200 ~ "morning",
dep_time > 1200 & dep_time <= 1800 ~ "afternoon",
dep_time > 1800 & dep_time <= 2400 ~ "evening",
dep_time > 0 & dep_time <= 600 ~ "midnight"
)) %>%
group_by(year, month, day, dep_interval) %>%
summarize(avg_arr_delay = mean(arr_delay, na.rm = TRUE),
arr_delay_var = var(arr_delay, na.rm = TRUE),
num_arr_airports = n_distinct(dest)) %>%
ungroup()
```
最后,我们可以选取平均到达延误在 30 分钟以内同时平均到达机场数据不低于 50 个的小组,并按照平均到达延误由大到小排列。
```R
flights_filtered <- flights %>%
filter(avg_arr_delay <= 30, num_arr_airports >= 50) %>%
arrange(desc(avg_arr_delay))
head(flights_filtered)
```
阅读全文