Вы можете применить следующий dplyr
скрипт к df
, чтобы получить желаемый результат.
library(dplyr)
df%>% group_by(time, exporter) %>%
filter(quantity == max(quantity)) %>%
arrange(desc(time, exporter, quantity))
# -------------------------------------------------------------------------
# # A tibble: 11 x 3
# # Groups: time, exporter [11]
# time exporter quantity
# <dbl> <chr> <dbl>
# 1 2002 Australia 2404
# 2 2002 New Zealand 90
# 3 2002 Fiji 113
# 4 2001 china 0
# 5 2001 Fiji 0
# 6 2001 SA 0
# 7 2001 Brazil 0
# 8 2001 Greece 0
# 9 2001 Turkey 0
# 10 2001 New Zealand 1
# 11 2001 KRP 0
Данные
#dput(list_1)
structure(list(time = c(2002, 2002, 2002), exporter = c("Australia",
"New Zealand", "Fiji"), quantity = c(2404, 90, 37)), class = "data.frame", row.names = c(NA,
-3L))
#dput(list_2)
structure(list(time = c(2001, 2001, 2001, 2001, 2001, 2001, 2001,
2001, 2002, 2002, 2002), exporter = c("china", "Fiji", "SA",
"Brazil", "Greece", "Turkey", "New Zealand", "KRP", "Australia",
"Fiji", "New Zealand"), quantity = c(0, 0, 0, 0, 0, 0, 1, 0,
0, 113, 18)), row.names = c(NA, -11L), class = "data.frame")
#dput(df)
structure(list(time = c(2002, 2002, 2002, 2001, 2001, 2001, 2001,
2001, 2001, 2001, 2001, 2002, 2002, 2002), exporter = c("Australia",
"New Zealand", "Fiji", "china", "Fiji", "SA", "Brazil", "Greece",
"Turkey", "New Zealand", "KRP", "Australia", "Fiji", "New Zealand"
), quantity = c(2404, 90, 37, 0, 0, 0, 0, 0, 0, 1, 0, 0, 113,
18)), row.names = c(NA, -14L), class = "data.frame")