在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 19:14:06 浏览: 87
OpenDDS-latest.rar_cannot8k1_flights8y_openDDS开发_opendds中文教程_ope
5星 · 资源好评率100%
以下是代码实现:
```R
library(nycflights13)
good_planes <- flights %>%
group_by(tailnum) %>%
filter(!is.na(tailnum), !is.na(arr_delay), !is.na(dep_delay)) %>%
summarise(
arr_delay_mean = mean(arr_delay),
dep_delay_mean = mean(dep_delay),
n = n()
) %>%
filter(arr_delay_mean < 200, dep_delay_mean < 200) %>%
arrange(tailnum)
good_planes_prop <- flights %>%
group_by(tailnum) %>%
filter(!is.na(tailnum), !is.na(arr_delay), !is.na(dep_delay), arr_delay < 120, dep_delay < 120) %>%
summarise(
prop = n() / sum(!is.na(arr_delay))
)
result <- merge(good_planes, good_planes_prop, by = "tailnum")
result <- result[, c("tailnum", "prop")]
head(result)
```
解释一下代码:
首先,我们使用 `group_by` 函数按 `tailnum` 分组,并使用 `filter` 函数去除 NA 值。
然后,我们计算每个组的平均延误时间和总行数,并使用 `filter` 函数找出所有的好飞机。
接着,我们按字母顺序排序,并提取出 `tailnum` 列。这就是第一列。
最后,我们再次使用 `group_by` 函数按 `tailnum` 分组,并使用 `filter` 函数找出满足条件的行。然后,我们计算比例,并将结果存储在 `prop` 列中。这就是第二列。
最后,我们使用 `merge` 函数将两个结果合并,并选择需要的列。
运行代码后,我们得到一个结果数据框,其中包含两列:`tailnum` 和 `prop`。`tailnum` 列显示所有的好飞机,`prop` 列显示每架飞机 arr_delay < 120 且 dep_delay < 120 的行数占该组总行数的比例。
阅读全文