Соответствие 2 столбцам в 2 отдельных фреймах данных с разным порядком и возвращение еще одного значения

У меня есть 2 кадра данных, где я ищу, чтобы соответствовать 2 столбцам текстовых данных (я знаком с использованием функции match() для сопоставления кадров данных, используя один столбец).

Кадр данных A является подмножеством кадра данных B, но данные в 2 столбцах могут отображаться в обратном порядке, то есть Dog-Cat может быть Cat-Dog. Кадр данных B также содержит дополнительный столбец числовых значений. Я хочу сопоставить фрейм данных A с фреймом B, а затем вернуть числовой столбец. Будет совпадение во всех случаях.

Фрейм данных A

Cat      Dog
Mouse    Cat
Rat      Cat
Rat      Dog

Фрейм данных B

Giraffe  Cat        0.7
Rat      Cat        0.2
Cat      Mouse      0.6
Cat      Dog        0.9
Giraffe  Elephant   0.1
Dog      Rat        0.3

Соответствующие данные должны прочитать

Cat      Dog         0.9
Mouse    Cat         0.6
Rat      Cat         0.2
Rat      Dog         0.3

Я пытался с match() и с попыткой объединить тестовые строки. Также не уверен, если grepl() поможет здесь.

1 ответ

Решение

Выполните слияние нормально, поменяйте местами столбцы и rbind два результата:

rbind( merge(A,B), merge(A,B, by.x=c('V1', 'V2'), by.y=c('V2', 'V1')))
     V1  V2  V3
1   Cat Dog 0.9
2   Rat Cat 0.2
3 Mouse Cat 0.6
4   Rat Dog 0.3
Другие вопросы по тегам