сопоставление значений на основе общих имен + максимальное значение дополнительного поля?(Р) - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь установить подмножество данных для сыновей с общим отцом, у которых самый большой вес.См. Пример данных ниже.

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 Ответ

2 голосов
/ 06 марта 2019

С библиотекой dplyr вы можете сделать

library(dplyr)

df2 %>%
  inner_join(df1, by = c('father' = 'name')) %>%
  group_by(father) %>%
  filter(weight == max(weight))
...