Множественная агрегация с неопределенным FUN в R - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть объект data.frame в R, и мне необходимо:

  1. Группировать по col_1
  2. Выбрать строки из col_3 так, чтобы значение col_2 было вторым по величине (если есть это только наблюдение для заданного значения col_1, например, возврата 'NA').

Как мне это получить?

Пример:

scored      xg  first_goal scored_mane

1       1 1.03212     Lallana           0

2       1 2.06000        Mane           1

3       2 2.38824   Robertson           1

4       2 1.64291        Mane           1 

Группировка по "scored_mane" , возвращаемые значения из "scored" , где "xg" является вторым по величине. Ожидаемый результат: "NA", 1

1 Ответ

1 голос
/ 24 февраля 2020

Вы можете попробовать следующее базовое решение R, используя aggregate + merge

res <- merge(aggregate(xg~scored_mane,df,function(v) sort(v,decreasing = T)[2]),df,all.x = TRUE)[,"scored"]

так, чтобы

> res
[1] NA  1

DATA

structure(list(scored = c(1L, 1L, 2L, 2L), xg = c(1.03212, 2.06, 
2.38824, 1.64291), first_goal = c("Lallana", "Mane", "Robertson", 
"Mane"), scored_mane = c(0L, 1L, 1L, 1L)), class = "data.frame", row.names = c("1", 
"2", "3", "4")) -> df
...