2016-12-14 134 views
-1

我有這樣的代碼:匹配數據幀

df1 <- data.frame(letter=c("a", "a", "a", "b", "b", "c", "d", "e"), 
       value=c(NA)) 
df2 <- data.frame(letter=c("a", "b", "g", "f", "d", "e", "a", "b", "a", "c"), 
       number=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) 

我想匹配信這兩個數據幀和DF2返回相應數量到值列DF1。

所以對於DF1結果看起來就會這樣的:

enter image description here

+1

'DF2 [匹配(DF1 $信,DF2 $字母),]' –

+0

看起來你也想按位置加入。你可以'library(data.table); setDT(df1)[,indx:= rowid(letter)]; set dT(df2)[,indx:= rowid(letter)]; df1 [df2,value:= number,on =。(letter,indx)]'(不要在'df1中預定義value = c '請在它創建一個邏輯向量而不是數字) –

+0

@PierreLafortune這不是他們想要的。 –

回答

-1

看與加入的功能包dplyr:

library(dplyr) 
inner_join(df1, df2) %>% 
    distinct(letter, number) 
+1

認真嗎?先看看所需的輸出如何 –

+0

這只是返回df1中的字母出現在df2中的位置。我更感興趣的是在df2中返回與該字母的每個實例相關的數字。例如,對於字母「a」,我想返回數字1,7,9 – Dfeld

+0

對不起,但我的解決方案返回所需的輸出(好吧,我後來添加了不同的功能)。對不起,如果我不明白這個問題... – denrou