在r语言的flights中,#按tailnum分组,去除arr_delay,dep_delay,tailnum的NA值。找出所有的好飞机组, 即该飞机组对应的数据表的所有行均满足arr_delay<200且dep_delay<200。按字母顺序,由小至大。然后计算每架飞机arr_delay<120且dep_delay<120的行数占该组总行数的比例。结果为两列,tailnum和prop
时间: 2024-02-05 09:14:08 浏览: 148
以下是实现该任务的代码:
``` r
library(nycflights13)
library(dplyr)
good_flights <- flights %>%
group_by(tailnum) %>%
filter(!is.na(tailnum)) %>%
summarise_all(~all(!is.na(.))) %>%
filter(arr_delay < 200 & dep_delay < 200) %>%
select(tailnum)
prop <- flights %>%
filter(arr_delay < 120 & dep_delay < 120) %>%
group_by(tailnum) %>%
summarise(prop = sum(arr_delay < 120 & dep_delay < 120) / n()) %>%
filter(tailnum %in% good_flights$tailnum) %>%
arrange(tailnum)
result <- data.frame(tailnum = prop$tailnum, prop = prop$prop)
result
```
首先,我们加载了 `nycflights13` 包,该包包含了航班数据集,其中包括了 `flights` 数据框。接着,我们使用 `dplyr` 包对 `flights` 数据框进行处理。
我们首先按 `tailnum` 分组,然后去除所有带有 `NA` 值的行。接着,我们筛选出所有满足 `arr_delay < 200` 且 `dep_delay < 200` 的飞机组,这些飞机组被认为是“好飞机组”。最后,我们只保留了 `tailnum` 列。
然后,我们使用 `filter()` 函数来筛选出所有满足 `arr_delay < 120` 且 `dep_delay < 120` 的行。接着,我们再次按 `tailnum` 分组,然后计算每个分组中满足条件的行数占该组总行数的比例,即通过 `sum(arr_delay < 120 & dep_delay < 120) / n()` 得到比例。
最后,我们筛选出属于“好飞机组”的飞机,并按字母顺序排序。结果存储在 `result` 数据框中,包含了 `tailnum` 和 `prop` 两列,其中 `tailnum` 列为飞机尾号,`prop` 列为满足条件的行数占该组总行数的比例。
阅读全文