2016-08-12 109 views
-1

我有兩個數據幀。第一個看起來像這樣R中兩個數據幀的匹配元素

name 
1 a 
2 b 
3 c 
4 d 
5 f 

和第二這樣

name value 
1 b  3 
2 d  4 
3 f  5 
4 a  1 
5 c  2 
6 k  7 
7 m  6 

現在我想第二個列添加到包含從第二清單中獲取元素的值第一個數據幀。它看起來像這樣

 name value 
    1 a  1 
    2 b  3 
    3 c  2 
    4 d  4 
    5 f  5 

有人能幫助我嗎?

+0

另一種選擇是'setDT(DF2)DF1,上=「名」]''從 – akrun

+0

data.table'如果data.frames包含比那些更多的列在這個例子中,你只需要將一列添加到帖子中描述的'df1'中,而不合並整個data.frames,您可以嘗試'df1 $ value < - df2 $ value [match(df1 $ name,df2 $ name)]''。 – RHertel

回答

1

你可以使用merge來做到這一點。如果你的第一個數據幀被稱爲df1,第二個df2

merge(df1, df2, by='name') 
1

你想要做什麼是內連接。您可以嘗試使用dplyr軟件包。

library(dplyr) 
x <- data.frame(name = c("a", "b", "c", "d", "f"), stringsAsFactors = FALSE) 
y <- data.frame(name = c("b", "d", "f", "a", "c", "k", "m"), 
       value = c(3, 4, 5, 1, 2, 7, 6), 
       stringsAsFactors = FALSE) 

joined <- dplyr::inner_join(x, y, by = "name")