2014-06-19 5 views
2

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

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

Dataframe

Cat  Dog 
Mouse Cat 
Rat  Cat 
Rat  Dog 

Dataframe 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().

+0

Извинения снова, но кадры данных не появились, как я напечатал их. Чтобы быть ясным, в DataFrame A и 3 в DataFrame B есть 2 столбца – RichS

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^