2016-02-13 98 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