сопоставление значений на основе общих имен максимальное значение дополнительного поля? (R)

#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))