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’)
时间: 2024-03-07 19:49:53 浏览: 25
很抱歉,作为一个语言模型,我无法直接使用R语言进行数据处理和计算。但我可以提供一些思路和方法供你参考:
1. 首先,使用R语言读取数据集 nycflights13::flights,然后剔除实际出发时间(dep_time)缺失的观测值,可以使用na.omit函数实现。
2. 接下来,可以创建一个新变量dep_interval,使用ifelse函数将实际出发时间分为四组:上午、下午、晚上和凌晨。例如:
```
flights$dep_interval <- ifelse(flights$dep_time >= 601 & flights$dep_time <= 1200, "上午",
ifelse(flights$dep_time > 1200 & flights$dep_time <= 1800, "下午",
ifelse(flights$dep_time > 1800 & flights$dep_time <= 2400, "晚上",
ifelse(flights$dep_time > 1 & flights$dep_time <= 600, "凌晨", NA))))
```
注意,这里使用了嵌套的ifelse函数,对于不满足条件的时间值,赋值为NA。
3. 然后,根据年、月、日和dep_interval进行分组,计算每组的平均到达延误时间、到达延误方差和到达机场数量。可以使用dplyr包中的group_by和summarize函数实现。
```
library(dplyr)
flights_new <- flights %>% na.omit() %>%
group_by(year, month, day, dep_interval) %>%
summarize(mean_arr_delay = mean(arr_delay, na.rm = TRUE),
var_arr_delay = var(arr_delay, na.rm = TRUE),
num_airports = n_distinct(arrival))
```
注意,这里使用了na.rm参数删除缺失值,并使用n_distinct函数计算到达机场数量。
4. 最后,选取平均到达延误在30分钟以内且平均到达机场数据不低于50个的小组,并按照平均到达延误由大到小排列。可以使用filter和arrange函数实现。
```
flights_select <- flights_new %>% filter(mean_arr_delay <= 30, num_airports >= 50) %>%
arrange(desc(mean_arr_delay))
```
注意,这里使用了desc函数将结果按照平均到达延误由大到小排列。
希望这些思路和方法可以帮助你完成题目要求。