library(dplyr)
library(nycflights13)
data("flights")
Могут быть более элегантные способы, но этот код подсчитывает общее количество рейсов, совершенных каждым самолетом (исключая отмененные рейсы), и объединяет его с полетами, которые не были отменены, группируя по уникальному идентификатору самолета (tailnum
), сортировка по дате / времени отправления, присвоение row_number меньше 1, фильтрация по задержкам> 60 и взятие первой строки.
select(
filter(flights, !is.na(dep_time)) %>%
count(tailnum, name="flights") %>% left_join(
filter(flights, !is.na(dep_time)) %>%
group_by(tailnum) %>%
arrange(month, day, dep_time) %>%
mutate(not_delayed=row_number() -1) %>%
filter(dep_delay>60) %>% slice(1)),
tailnum, flights, not_delayed)
# A tibble: 4,037 x 3
tailnum flights not_delayed
<chr> <int> <dbl>
1 D942DN 4 0
2 N0EGMQ 354 53
3 N10156 146 9
4 N102UW 48 25
5 N103US 46 NA
6 N104UW 47 3
7 N10575 272 0
8 N105UW 45 22
9 N107US 41 20
10 N108UW 60 36
# ... with 4,027 more rows
Плоскость с tailnum N103US совершил 46 рейсов, ни один из которых не был задержан более чем на 1 час. Таким образом, количество полетов, которые он совершил за до , его первая 1-часовая задержка не определено или NA.