Я искал простой способ сделать это с помощью R, но я не смог его найти, поэтому я размещаю его здесь.Принимая разницу между двумя кадрами данных в R
Давайте предположим, что у меня есть следующий кадр данных
state1 score1 state2 score2
A 1 A 3
A 2 B 13
A 1 C 5
B 10 A 1
B 5 B 0
B 3 C 0
C 2 A 5
C 0 B 6
C 1 C 3
и 2-й кадр данных является
state1 state2 score
A A 0
A B -1
A C 3
B A 2
B B 1
B C 1
C A 2
C B 2
C C 1
Назовем первый кадр данных, df1 и вызовите второй край, df2.
Посмотрите на df1, df2, имеющие одинаковые (state1, state2) пары. Для каждой из этих совпадающих пар вычтите оценку в df2 из score1 в df1 и назовите ее newscore1 и вычтите оценку в df2 из score2 в df2 и назовите ее newscore2. Для этого случая было бы желательным выходом.
state1 newscore1 state2 newscore2
A 1 A 3
A 3 B 14
A -2 C 2
B 8 A -1
B 4 B -1
B 2 C -1
C 0 A 3
C -2 B 4
C 0 C 2
Есть ли одно-двухслойное решение? В противном случае, я должен сделать
1) переупорядочить df2 так, чтобы state1, state2 совпадали с df1 (в этом случае мне не нужно ничего делать, поскольку строка 1 в df1 уже соответствует строке 1 в df2 , строка 2 в df1 уже совпадает со строкой 2 в df2 и так далее)
2) cbind в df1 $ score1-df2 $ счет, df1 $ score2-dF2 $ оценка
При использовании 'sample' вы также должны использовать' set.seed() ', чтобы сделать ваш пример воспроизводимым – SymbolixAU