Will Phillips Will Phillips - 1 year ago 111
R Question

updating column in one dataframe with value from another dataframe based on matching values

I have a data frame "z"

letter color
1 a 0
2 e 0
3 b 0
4 b 0
5 d 0
6 d 0
7 a 0
8 b 0
9 c 0
10 d 0
11 c 0
12 c 0
13 c 0
14 c 0
15 e 0
16 e 0
17 a 0
18 d 0
19 e 0
20 b 0

and another data frame "y"

letter color
1 a red
2 b blue
3 c green

when the letter in z matches with a letter in y I would like to append the color from y into the corresponding color field in z but I do not want to remove any values from z. If a match doesn't occur, z$color should remain unchanged. I used"0" as a place holder in z$color, this could be text instead.

I've been attempting things for loops, the match() command and statements with %in% but I'm not quite achieving the results I'm after.

Any ideas?

This is the code I used for the data frames



Answer Source

you don't need z$color in the first place if its just place holder, you can replace NA later with 0

z$color<-y[match(z$letter, y$letter),2]
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download