2017-02-22 4 views
-1

Учитывая эти две таблицыОбъединить таблицы по ячейкам

a <- data.frame(a=c(1,2,3),b=c(4,5,6)) 
b <- data.frame(a=c(7,8,9),b=c(10,11,12)) 

Я хотел бы получить третью таблицу, комбинируя и б по ячейкам, как это:

a b 
1 1,7 4,10 
2 2,8 5,11 
3 3,9 6,12 
+0

попытка 'as.data.frame (sapply (1: Ncol (а), функция (я) паста (а [, я], Ь [, я ], sep = ','))) ' –

ответ

2

Это действительно зависит от того, вы хотите сделать результат. Вот несколько версий:

data.frame(Map("paste", a, b, sep=",")) 
    a b 
1 1,7 4,10 
2 2,8 5,11 
3 3,9 6,12 

, который возвращает два столбца фактор-переменных. Вы можете добавить струнные asFactors = FALSE, чтобы получить переменные символов вместо этого, как и в

data.frame(Map("paste", a, b, sep=","), stringsAsFactors=FALSE) 

или поместить их в отдельные столбцы с одинаковыми именами.

cbind(a, b)[c(1,3,2,4)] 
    a a.1 b b.1 
1 1 7 4 10 
2 2 8 5 11 
3 3 9 6 12 

или, более программный

do.call(cbind.data.frame, Map(cbind, a, b)) 
    a.1 a.2 b.1 b.2 
1 1 7 4 10 
2 2 8 5 11 
3 3 9 6 12 
Смежные вопросы