假设我们在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])
答案 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)