我發現自己在R中多次進行「有條件的左連接」。如果你有兩個數據幀,諸如:你如何做R中的條件「左連接」?
> df
a b
1 1 0
2 2 0
> other.df
a b
1 2 3
目標是與這個數據幀結束:
> final.df
a b
1 1 0
2 2 3
我到目前爲止一直在寫代碼:
c <- merge(df, other.df, by=c("a"), all.x = TRUE)
c[is.na(c$b.y),]$b.y <- 0
d<-subset(c, select=c("a","b.y"))
colnames(d)[2]<-b
終於到達我想要的結果。
這樣做有效地使四行代碼非常不透明。 有沒有更好,更麻煩的方法來做到這一點?
我要推薦** ** sqldf包,如果你想要做的數據幀更復雜的SQL類型的東西,但是和往常一樣,當我試圖將它解僱寫回答時,它一直在崩潰。所以......你知道......也許你會有更好的運氣。但對我而言這絕對不可靠。 – joran 2012-07-06 21:53:06
@joran,建議您閱讀sqldf主頁(http://sqldf.googlecode.com/#Troubleshooting)上的'Troubleshooting'部分。 – 2012-07-10 22:56:02
@ G.Grothendieck哦,我已經讀過了。我嘗試了FAQ#5中的所有內容,並且它仍然崩潰R. :( – joran 2012-07-10 23:25:28