从另一列填充数据框列

时间:2016-08-04 14:54:43

标签: r

是否可以根据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的值,否则将该单元格留空。

1 个答案:

答案 0 :(得分: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