是否可以根据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 :(得分:0)
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