2016-02-13 134 views
2

我試圖合併兩個數據幀使用下面的代碼:合併R中單列dataframes

x<-data.frame(c(1:5)) 
colnames(x)[1]<- c("list1") 

y<- data.frame(c(1:4)) 
colnames(y)[1]<-c("list2") 

merge(x,y, by.x="list1", by.y="list2", all.x=T) 

我理想的輸出是,如列表:

list1 list2 
1  1 
2  2 
3  3 
4  4 
5  NA 

然而,當我運行它上面的腳本只會給我這個輸出:

list1 
1  
2  
3  
4  
5 

當我沒有指定保留all.x在合併函數列表看也是類似的。我不確定我做錯了什麼,因爲R沒有給我任何錯誤消息並運行代碼。我只想獲得兩個單列列表,並將它們像VLOOKUP函數一樣對齊。

謝謝!

回答

2

我們可以通過merge 'row.names'

merge(x,y, by ='row.names', all=TRUE)[-1] 
#  list1 list2 
#1  1  1 
#2  2  2 
#3  3  3 
#4  4  4 
#5  5 NA 

或者使用match

transform(x, list2=y$list2[match(x$list1, y$list2)]) 
+1

合併由rownames工作只是因爲rownames與之相匹配的數據列。 – zx8754