基本上,我有一个数据框,其中有一些数据需要替换为另一个数据框中的数据.一些观察结果只需要在许多列中的几个列中进行更改.
举例来说,假设我有一个数据帧:
df1 <- data.frame(index = c('a', 'b', 'c', 'd', 'e'),
var1 = c(40, 22, 12, 4, 0),
var2 = c(75, 55, 65, 15, 0),
var3 = c(9, 18, 81, 3, 0),
var4 = c(1, 11, 21, 61, 0),
var5 = c(-1, -2, -3, -4, 0),
var6 = c(0, 1, 0, 1, 0))
index var1 var2 var3 var4 var5 var6
1 a 40 75 9 1 -1 0
2 b 22 55 18 11 -2 1
3 c 12 65 81 21 -3 0
4 d 4 15 3 61 -4 1
5. e 0 0 0 0 0 0
然后,出现了一些关于"b"和"c"观测值的更好数据,但仅限于变量"var2"和"var3":
df2 <- data.frame(index = c('a', 'b', 'c', 'd'),
var1 = c(40, 22, 12, 4),
var2 = c(75, 550, 650, 15),
var3 = c(9, 180, 810, 3),
var4 = c(1, 11, 21, 61))
index var1 var2 var3 var4
1 a 40 75 9 1
2 b 22 550 180 11
3 c 12 650 810 21
4 d 4 15 3 61
我想要生成的数据帧:
index var1 var2 var3 var4 var5 var6
1 a 40 75 9 1 -1 0
2 b 22 550 180 11 -2 1
3 c 12 650 810 21 -3 0
4 d 4 15 3 61 -4 1
5 e 0 0 0 0 0 0
有什么建议吗(特别是关于offfer的tidyverse解决方案?)我玩过mutate
、across
和replace
,但似乎都没玩到.
Clarification:我希望var2和var3的新值替换为来自df2的值,只要索引值在df1中找到.其他一切都应该保持不变.我正在处理的数据集多次显示索引值.我try 了以下方法,但语法有问题:
df1 %>%
mutate(across(c(var2, var3),
~if_else(index %in% df2$index),
.[df2$index],
.))