2013-08-19 51 views
0

有沒有可以使多個向量匹配的match()的方法/替代方法?爲了說明:在R中匹配多個向量

df1 = data.frame(c1=letters[1:10], c2=1:10, c4=10:1) 
df2 = data.frame(c1=c('a','b','c','x'), c2=c(1,2,4,4)) 

如果我們想將df1$c4數據附加到的df2適當的行,我們就可以使用match()像這樣

df1$c3 = paste(df1$c1, df1$c2) 
df2$c3 = paste(df2$c1, df2$c2) 
df2$c4 = df1$c4[match(df2$c3, df1$c3)] 

但這似乎有點囉嗦。有誰知道更優雅的技術?

回答

0

merge()函數應該是你要找的。例如:

> merge(df1,df2,all.x=T) 
    c1 c2 c4 
1 a 1 10 
2 b 2 9 
3 c 3 8 
4 d 4 7 
5 e 5 6 
6 f 6 5 
7 g 7 4 
8 h 8 3 
9 i 9 2 
10 j 10 1 
> merge(df1,df2,all.y=T) 
    c1 c2 c4 
1 a 1 10 
2 b 2 9 
3 c 4 NA 
4 x 4 NA 
+0

感謝大衛,不使用合併,但知道它必須是類似的東西 – geotheory

+1

另外,使用'na.locf()'與'一起merge'有助於當您希望與替換每個NA最近的非NA。 – Mayou