2009-10-31 61 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)