2016-08-04 131 views
0

是否可以根據2個數據幀之間的公共列值填充列?從另一列填充數據幀列

例如,第一DF1具有這樣的數據:

group, num 
12, 0 
19, 0 
43, 1 

和第二DF2:

group 
11 
11 
11 
12 
12 
12 
12 
24 
24 
25 
43 
43 

和我想有輸出是這樣的:

group, out 
    11 
    11 
    11 
    12, 0 
    12, 0 
    12, 0 
    12, 0 
    24 
    24 
    25 
    43, 1 
    43, 1 

如果來自df1值的組存在於df2組列中,然後在新的df中填充來自df1的列num的值,否則留空細胞。

回答

0

dplyr庫中的left.join是您所需要的。它所做的就是保留第一個data.frame中的所有值,並在可能的情況下使用基於給定列的第二個data.frame加入它們。

library (dplyr) 
df1 <- data.frame("group"=c(12,19,43), "num"=c(0,0,1)) 
print (df1) 
    group num 
1 12 0 
2 19 0 
3 43 1 

df2 <- data.frame("group"=c(11,11,11,12,12,12,12,24,24,25,43,43)) 
print (df2) 
    group 
1  11 
2  11 
3  11 
4  12 
5  12 
6  12 
7  12 
8  24 
9  24 
10 25 
11 43 
12 43 

df3 <- left_join(df2, df1, by = "group") 
print (df3) 
    group num 
1  11 NA 
2  11 NA 
3  11 NA 
4  12 0 
5  12 0 
6  12 0 
7  12 0 
8  24 NA 
9  24 NA 
10 25 NA 
11 43 1 
12 43 1