объединить два фрейма данных на основе сопоставления двух столбцов с возможностью обмена в каждом фрейме данных

У меня есть два кадра данных в R.

кадр данных 1

A B C D E F G
1 2 a a a a a
2 3 b b b c c
4 1 e e f f e

кадр данных 2

X Y Z
1 2 g
2 1 h
3 4 i
1 4 j

Я хочу сопоставить столбцы A и B кадра данных1 с кадром данных2 столбец X и Y. Это НЕ парные сравнения, т.е. строка 1 (A = 1 B = 2) считается такой же, как строка 1 (X = 1, Y = 2) и строка 2 (X = 2, Y = 1) фрейма данных 2.

Когда совпадение будет найдено, я хотел бы добавить столбцы C, D, E, F фрейма данных1 обратно в совпавшую строку фрейма данных2, как показано ниже: без совпадения как na.

Конечный фрейм данных

X Y Z C  D  E  F  G
1 2 g a  a  a  a  a 
2 1 h a  a  a  a  a
3 4 i na na na na na
1 4 j e  e  f  f  e

Я могу знать только, как выполнить сопоставление для одного столбца, однако, как выполнить сопоставление для двух заменяемых столбцов и слияние двух фреймов данных на основе результатов сопоставления, для меня затруднительно. Пожалуйста, помогите предложить умный способ сделать это.

Для простоты обсуждения (спасибо за комментарии Винсента и DWin (мой предыдущий вопрос), что я должен проверить цитату). Есть квота для загрузки фреймов данных 1 и 2 в R.

df1 <- data.frame(A = c(1,2,4), B=c(2,3,1), C=c('a','b','e'), 
                                D=c('a','b','e'), E=c('a','b','f'), 
                                F=c('a','c','f'), G=c('a','c', 'e'))

df2  <- data.frame(X = c(1,2,3,1), Y=c(2,1,4,4), Z=letters[7:10])
6
задан Henry 25 May 2011 в 08:02
поделиться