2015-05-18 3 views
4

У меня есть два data.frames, «x» и «y». «x» и «y» имеют разное количество столбцов. Как видно из следующего:R: Объединить два кадра данных с помощью общих столбцов

x 
    A1 A3 A5 A6 
1 a b b a 

y 
    A1 A2 A3 A4 A5 A6 A7 
1 9 10 11 9 10 10 10 
2 0 6 2 2 8 1 4 
3 0 4 0 1 0 0 0 
4 12 12 12 12 12 12 11 
5 11 11 9 12 12 11 11 
6 0 0 0 0 0 1 0 

Я хочу, чтобы создать новый data.frame, только с общими столбцами до двух data.frames. И содержимое этого нового data.frame происходит только от «y». Окончательный файл данных должен выглядеть следующим образом:

A1 A3 A4 A6 
1 9 11 9 10 
2 0 2 2 1 
3 0 0 1 0 
4 12 12 12 12 
5 11 9 12 11 
6 0 0 0 1 

Это примеры. На самом деле в моих реальных файлах данных есть сотни столбцов. Кто-нибудь знает как это делать?

ответ

6

Вы можете индексировать y по именам столбцов, которые x и y имеют в общем:

y[,intersect(names(x), names(y))] 
# A1 A3 A5 A6 
# 1 9 11 10 10 
# 2 0 2 8 1 
# 3 0 0 0 0 
# 4 12 12 12 12 
# 5 11 9 12 11 
# 6 0 0 0 1 
7

Попробуйте это:

y[,colnames(y) %in%colnames(x)] 
    A1 A3 A5 A6 
1 9 11 10 10 
2 0 2 8 1 
3 0 0 0 0 
4 12 12 12 12 
5 11 9 12 11 
6 0 0 0 1 
Смежные вопросы