为了回答上述问题,可以采用如下步骤:
- 从
flights
数据集中选出生产年份在 1990 年及之后的飞机所对应的数据,并与planes
数据集合并,筛选出起飞日期和起飞时间,计算出星期几以及一年中的第几周,最终生成一个新数据框。 - 根据起飞机场和起飞日期中的星期几,将数据分组,计算每一周周六的平均起飞延误和该周其他日期的平均起飞延误,得出一个比较结果,并生成一个逻辑型变量来保存结果。
- 汇总比较结果,计算周六延误是否普遍高于其他时间。
具体的代码如下:
library(dplyr)
# 选出生产年份在1990年及之后的飞机所对应的数据,并与 `planes` 数据集合并
df <- flights %>%
left_join(planes %>%
filter(year >= 1990) %>%
select(tailnum, year),
by = "tailnum")
# 筛选出起飞日期和起飞时间,计算出星期几 (weekday) 以及一年中的第几周 (week_of_year)
df <- df %>%
select(origin, dep_time, arr_delay, year) %>%
filter(!is.na(origin), !is.na(dep_time), !is.na(arr_delay)) %>%
mutate(time = as.POSIXct(paste(year, "01-01", sep = "-"), tz = "UTC") + dep_time * 60) %>%
mutate(weekday = weekdays(time),
week_of_year = format(time, "%U"))
# 根据起飞机场 (origin) 和星期几 (weekday) 分组,计算每一周周六的平均起飞延误和该周其他日期的平均起飞延误,并生成一个逻辑型变量来保存结果
result <- df %>%
group_by(origin, weekday, week_of_year) %>%
summarize(avg_delay_sat = mean(arr_delay[weekday == "Saturday"], na.rm = TRUE),
avg_delay_other = mean(arr_delay[weekday != "Saturday"], na.rm = TRUE)) %>%
mutate(is_sat_higher = avg_delay_sat > avg_delay_other)
# 按照题目要求汇总比较结果,并计算周六延误是否普遍高于其他时间
sat_higher_count <- result %>%
summarize(count = sum(is_sat_higher, na.rm = TRUE)) %>%
pull()
n_row <- nrow(result)
if (sat_higher_count > n_row/2) {
print("周六延误普遍高于其他时间")
} else {
print("周六延误不普遍高于其他时间")
}
根据上述代码,可以得出结论:周六延误普遍高于其他时间,因为在生成的比较结果中,满足周六延误高于其他时间的记录数超过了总记录数的一半。