Вы можете попробовать:
library(dplyr)
library(tidyr)
pivot_longer(df, everything()) %>%
group_by(Airports = value) %>%
summarise(
totalMovements = n(),
takeoffs = sum(name == 'Origin'),
landings = sum(name == 'Destination')
)
Вывод (на основе строк, показанных в вашем вопросе):
# A tibble: 17 x 4
Airports totalMovements takeoffs landings
<fct> <int> <int> <int>
1 DAAE 1 1 0
2 EDDH 1 1 0
3 LFLL 2 2 0
4 LFPG 2 2 0
5 LFPO 2 2 0
6 LPPD 1 1 0
7 UMKK 1 1 0
8 DAAS 1 0 1
9 EDDN 1 0 1
10 EDDW 1 0 1
11 LEMD 1 0 1
12 LFBA 1 0 1
13 LFML 1 0 1
14 LFRN 1 0 1
15 LFSL 1 0 1
16 ULLI 1 0 1
17 UUEE 1 0 1
Если вы хотите использовать только dplyr
Вы также можете эмулировать поведение pivot_longer
с помощью:
library(dplyr)
bind_rows(
df %>% transmute(Airports = Origin, name = 'Origin'),
df %>% transmute(Airports = Destination, name = 'Destination')
) %>%
group_by(Airports) %>%
summarise(
totalMovements = n(),
takeoffs = sum(name == 'Origin'),
landings = sum(name == 'Destination')
)