r类似于sql内连接选择

时间:2009-10-31 07:39:47

标签: sql r

假设我们在R中的两个数据帧中有表x和y的内容。这是在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])

2 个答案:

答案 0 :(得分:4)

这是already answered on stackoverflow

除了合并之外,如果你对SQL更熟悉,你应该检查sqldf包,它允许你在数据帧上运行SQL查询。

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

也就是说,从长远来看,你最好学习基础R函数(合并,交叉,联合等)。

答案 1 :(得分:1)

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