【发布时间】:2014-02-11 20:31:29
【问题描述】:
我有一个数据框“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
和另一个数据框“y”
letter color
1 a red
2 b blue
3 c green
当 z 中的字母与 y 中的字母匹配时,我想将 y 中的颜色附加到 z 中的相应颜色字段中,但我不想从 z 中删除任何值。如果没有匹配,z$color 应该保持不变。我在 z$color 中使用“0”作为占位符,这可以是文本。
我一直在尝试循环、match() 命令和带有 %in% 的语句,但我并没有完全达到我想要的结果。
有什么想法吗?
这是我用于数据帧的代码
set.seed(3)
z=data.frame(sample(c("a","b","c","d","e"),20,replace=T))
names(z)="letter"
z$color=rep(0,dim(z)[1])
z
y1=c("a","b","c")
y2=c("red","blue","green")
y=data.frame(cbind(y1,y2))
names(y)=c("letter","color")
y
【问题讨论】:
-
用
match,我想应该是y$color[match(z$letter, y$letter)]
标签: r