Привет, у меня есть два кадра данных:
df1 = data.frame(PersonId1=c(1,2,3,4,5,6,7,8,9,10,1),PersonId2=c(11,12,13,14,15,16,17,18,19,20,11),
Played_together = c(1,0,0,1,1,0,0,0,1,0,1),
Event=c(1,1,1,1,2,2,2,2,2,2,2),
Utility=c(20,-2,-5,10,30,2,1,.5,50,-1,60))
df2 = data.frame(PersonId1=c(11,15,9,1),PersonId2=c(1,5,19,11),
Played_together = c(1,1,1,1),
Event=c(1,2,2,2))
Где df1 выглядит так:
PersonId1 PersonId2 Played_together Event Utility
1 1 11 1 1 20.0
2 2 12 0 1 -2.0
3 3 13 0 1 -5.0
4 4 14 1 1 10.0
5 5 15 1 2 30.0
6 6 16 0 2 2.0
7 7 17 0 2 1.0
8 8 18 0 2 0.5
9 9 19 1 2 50.0
10 10 20 0 2 -1.0
11 1 11 1 2 60.0
и df2 выглядит так:
PersonId1 PersonId2 Played_together Event
1 11 1 1 1
2 15 5 1 2
3 9 19 1 2
4 1 11 1 2
Обратите внимание, что df2 - это не просто df1 $ plays_together == 1 . (Например, PlayerId1 = 4 и PlayerId2 = 14 отсутствует в df2.
Также обратите внимание, что, хотя df2 является подмножеством df1, порядок появления людей в df2 является случайным. Например, в df1 в строке 1 мы видим playerid1 = 1 и playerId2 = 11 для события 1. Но в df2 в строке 1 мы видим playerid1 = 11 и playerId2 = 1 для Событие 1. Эти два случая абсолютно одинаковы, и я хочу посмотреть значения Utility от df1 до df2 . Слияние должно происходить для каждого события. Окончательный результат должен выглядеть следующим образом:
PersonId1 PersonId2 Played_together Event Utility
1 11 1 1 1 20
2 15 5 1 2 30
3 9 19 1 2 50
4 1 11 1 2 60
Я знаю, что в R существует функция слияния, но я не знаю, что делать, когда идентификаторы поиска могут отображаться как случайные. Был бы признателен, если кто-то может помочь мне немного. Заранее спасибо.