我想替换以下数据框中的值
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))
答案 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