2009-10-31 63 views
1

假设我们有一个表x和y的两个dataframes的内容R.这是像在SQL中使用以下执行操作建议的办法:我想[R类似的sql内连接选择

Select x.X1, x.X2, y.X3 
into z 
from x inner join y on x.X1 = y.X1 

以下在R.是否有更好的方法? 谢谢

x<-data.frame(cbind('X1'=c(5,9,7,6,4,8,3,1,10,2),'X2'=c(5,9,7,6,4,8,3,1,10,2)^2)) 
y<-data.frame(cbind('X1'=c(9,5,8,2),'X3'=c('nine','five','eight','two'))) 

z<-cbind(x[which(x$X1 %in% (y$X1)), c(1:2)][order(x[which(x$X1 %in% (y$X1)), c(1:2)]$X1),],y[order(y$X1),2]) 

回答

4

这是already answered on stackoverflow

除合并之外,如果您更熟悉SQL,则应检出sqldf软件包,它允许您在数据框上运行SQL查询。

library(sqldf) 
z <- sqldf("SELECT X1, X2, X3 FROM x JOIN y 
     USING(X1)") 

也就是说,从长远来看,学习基本R函数(合并,相交,联合等)会更好。

+0

有趣的是,我知道RMySQL,但不是sqldf ..看起来很酷。 – dalloliogm 2009-11-02 12:24:16

1

好,很容易 合并(X,Y)