Чтобы получить самого молодого спортсмена, который выиграл медаль X за X в {бронза, серебро, золото}, вот один из способов, используя dplyr::
.
library(dplyr)
# make some fake data
dat <- data.frame(
ID = 1:7,
Name = c("a","b","c","d","e","f","g"),
Age = c(10, 15, 20, 25, 30, 35, 40),
Medal = c("bronze","bronze","silver","silver","gold","gold",NA),
Country = c("GRE","SEN","FIN","USA","GRE","USA","FIN"))
# get just the rows where the person is the youngest to win their medal type:
dat %>% group_by(Medal) %>%
filter(Age == min(Age)) %>% ungroup()
## output will look like this:
##
## ID Name Age Medal Country
## 1 a 10 bronze GRE
## 3 c 20 silver FIN
## 5 e 30 gold GRE
## 7 g 40 NA FIN
Это также вернет самого молодого человека с NA
в качестве значения в $Medal
.Чтобы просто получить информацию о трех победителях медали и игнорировать NA
с, просто filter()
сначала данные:
dat %>%
filter(!is.na(Medal)) %>%
group_by(Medal) %>%
filter(Age == min(Age)) %>% ungroup()
Или, если вы просто хотите получить информацию о самом молодом человеке, который когда-либо выигрывал любая медаль, тогда вы можете просто отфильтровать данные напрямую (т.е. без группировки сначала по $Medal
):
dat %>%
filter(!is.na(Medal)) %>%
filter(Age == min(Age))