【发布时间】:2021-10-10 14:34:51
【问题描述】:
我有两个具有相同变量名称的数据框,第一个带有值,第二个带有影子变量。我想根据 df2 中的值对 df1 上的变量进行变异(如果 df2$x > 90,那么我想将 df1$x 变异为 NA)。
# Example input dataframes
df1 <- data.frame(
x = c(123, 456, 789),
y = c(120, 745, 789),
z = c(852, 741, 963)
)
df2 <- data.frame(
x = c(1, 95, 96),
y = c(1, 99, 1),
z = c(98, 1, 1)
)
我想要获得的是一个如下所示的数据框:
# x y z
#1 123 120 NA
#2 NA NA 741
#3 NA 789 963
我得到了我想要的结果:
result <- df1%>%
mutate(x= replace(x, df2$x > 90 , NA )) %>%
mutate(y= replace(y, df2$y > 90 , NA )) %>%
mutate(z= replace(z, df2$z > 90 , NA ))
但我想改用 for 循环,因为我有几个变量。我试过了:
for (i in c("x" , "y" , "z") {
result <- df1%>%
mutate(i= replace(i, df2$i > 90 , NA ))
}
但是没有用...所以我在这里寻求您的指导。提前谢谢!
【问题讨论】: