如何用基准数据替换不等式条件

时间:2016-06-07 17:07:03

标签: r

我需要检查dat以确保max是> min。如果不满足此条件,那么我想将其替换为base的{​​{1}}数据。我目前正在使用date循环,但是当满足很多这些条件时,它确实很慢。有更快的方法吗?

示例数据

for

代码

library(dplyr)

base <- data.frame(id = rep(1, 10), date = seq_along(1:10), max = c(90, 80, 70, 60, 50, 40, 30, 20, 10, 1), min = c(70, 60, 50, 40, 30, 20, 10, 0, -10, -20))
dat <- data.frame(id = rep(1, 10), date = seq_along(1:10), max = c(90, 80, 70, 60, 50, 40, 30, 20, 10, 1), min = c(70, 60, 100, 40, 30, 20, 100, 0, -10, -20))

1 个答案:

答案 0 :(得分:2)

我们可以使用逻辑索引('i1')将'dat'中的'date'替换为'base'中相应的'date':

i1 <- !with(dat, max > min)
dat$date[i1] <- base$date[i1]

或者只需一步使用ifelse

ifelse(dat$max > min, dat$date, base$date)

更新

如果OP想要将'max'和'min'列值替换为'base'中的相应元素

 dat[i1, c('max', 'min')] <- base[i1, c('max', 'min')]