2016-08-04 139 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