R:替换部分数据帧

时间:2015-10-17 20:25:05

标签: r replace

我想替换以下数据框中的值

x <- letters[1:10]
y <- 1:10
z <- 100:109
df <- data.frame(x,y,z)

使用此子数据框

repl <- data.frame(x = c('c', 'e'), y = c(13,15))

以便仅当y列符合替换数据框时才会修改列x。而且我不想在x列中处理值的顺序。如果订购得好,很容易。

df[df$x %in% repl$x, c('x','y')] <- repl

但是如果更换数据框是

该怎么办
repl <- data.frame(x = c('e', 'c'), y = c(15,13))

1 个答案:

答案 0 :(得分:1)

您可以使用person_mentions代替%in%:

match

这是第二种表述的结果:

    repl <- data.frame(x = c('c', 'e'), y = c(13,15))
df[match(repl$x,df$x),'y'] <-repl$y
> df
   x  y   z
1  a  1 100
2  b  2 101
3  c 13 102
4  d  4 103
5  e 15 104
6  f  6 105
7  g  7 106
8  h  8 107
9  i  9 108
10 j 10 109