在r语言中,在flights中, 第一步:#按tailnum分组,去除arr_delay,dep_delay,tailnum的NA值。 第二步:找出所有的坏飞机,即存在该组飞机的数据表对应的行数中同时满足三个条件,第一个条件是:有arr_delay>120或者dep_delay>120的行,第二个条件是情况(1)出现的比例高于5%,第三个条件是该飞机数据表对应的行数大于20次。 第三步:然后tailnum按字母顺序,由小至大。第二列为chengshi,值为tailnum数据表对应的行数中origin最多的城市值(去除NA),如最多值有多个值时,按字母顺序,由小至大全部保留。 即最后结果只有两列,并且正确答案是一个693*2的tibble
时间: 2023-10-10 08:10:13 浏览: 199
以下是可以实现上述功能的 R 代码:
```R
library(dplyr)
# 第一步
flights_filtered <- flights %>%
group_by(tailnum) %>%
filter(!is.na(tailnum) & !is.na(arr_delay) & !is.na(dep_delay)) %>%
ungroup()
# 第二步
bad_planes <- flights_filtered %>%
group_by(tailnum) %>%
summarise(num_rows = n(),
num_bad_rows = sum(arr_delay > 120 | dep_delay > 120),
prop_bad_rows = mean(arr_delay > 120 | dep_delay > 120)) %>%
filter(num_rows > 20, prop_bad_rows > 0.05)
# 第三步
city_counts <- flights_filtered %>%
filter(!is.na(origin)) %>%
group_by(tailnum, origin) %>%
summarise(num_rows = n()) %>%
group_by(tailnum) %>%
slice_max(num_rows, n = 1) %>%
select(tailnum, chengshi = origin) %>%
arrange(tailnum)
# 合并结果
result <- bad_planes %>%
inner_join(city_counts, by = "tailnum") %>%
select(tailnum, chengshi)
```
注意,这里使用了 `dplyr` 包中的函数来进行数据处理和计算,需要先安装并加载该包。在实际操作中,还需要先加载 `flights` 数据集。
阅读全文