#r #pattern-matching #max
#r #сопоставление с шаблоном #максимальное
Вопрос:
Я пытаюсь подмножество фрейма данных для сыновей с общим отцом, которые имеют наибольший вес. Смотрите пример данных ниже.
va <- c("tom", "john", "regis")
df1 <- data.frame(va)
names(df1) <- "names"
vb <- c("chris", "ned", "curt")
vc <- c("tom", "tom", "vince")
vd <- c(20, 30, 40)
df2 <- data.frame(vb, vc, vd)
names(df2) <- c("names", "father", "weight")
Я могу подмножество, основанное только на общих именах с:
df2[df2$father %in% df1$names,]
которое возвращает:
names father weight
1 chris tom 20
2 ned tom 30
но как я могу вернуть только это?
[2] ned tom 30
Ответ №1:
С dplyr
библиотекой вы можете сделать
library(dplyr)
df2 %>%
inner_join(df1, by = c('father' = 'name')) %>%
group_by(father) %>%
filter(weight == max(weight))