Reputation: 3
I am trying fill x1 x2 x3 x4 x5 into DF2 from DF1 according to DF1$x6. I have 800+ unique DF1$x6 observations. Thank you in advance
DF1:
x1 x2 x3 x4 x5 x6
2 a c a 5 a1
o 5 y 7 I a2
H 5 a v 3 a3
0 8 I a 3 a4
DF2
x1 x2 x3 x4 x5 x6
a4
a2
a4
a1
a1
a4
a3
To get a result below
DF2
x1 x2 x3 x4 x5 x6
0 8 I a 3 a4
o 5 y 7 I a2
0 8 I a 3 a4
2 a c a 5 a1
2 a c a 5 a1
0 8 I a 3 a4
H 5 a v 3 a3
Upvotes: 0
Views: 968
Reputation: 160597
This can be a merge/join operation:
merge(DF2[,"x6",drop=FALSE], DF1, by = "x6", all.x = TRUE)
# x6 x1 x2 x3 x4 x5
# 1 a1 2 a c a 5
# 2 a1 2 a c a 5
# 3 a2 o 5 y 7 I
# 4 a3 H 5 a v 3
# 5 a4 0 8 I a 3
# 6 a4 0 8 I a 3
# 7 a4 0 8 I a 3
Or you can use match
in a simplified join-like operaiton, as @Ben suggested in a comment:
DF1[match(DF2$x6, DF1$x6),]
# x1 x2 x3 x4 x5 x6
# 4 0 8 I a 3 a4
# 2 o 5 y 7 I a2
# 4.1 0 8 I a 3 a4
# 1 2 a c a 5 a1
# 1.1 2 a c a 5 a1
# 4.2 0 8 I a 3 a4
# 3 H 5 a v 3 a3
Upvotes: 1