R-双重比较和替换



我有问题。如果满足两个条件,我需要替换两个列:

  1. 我想从数据比较的两列必须相等(同一行成对)。
  2. 两列必须等于7或8或9。

如果已经满足条件,则应替换两列的Na。

例如:假设我想从数据中比较第二和第三列:

data[,2] = 7,2,4,5,9,2,1,8,2,4
data[,3] = 3,2,5,6,9,3,1,8,2,4

,因此我想收到它:

data[,2] = 7,2,4,5,NA,2,1,NA,2,4
data[,3] = 3,2,5,6,NA,3,1,NA,2,4

r在两个列相等时应比较na,并且等于 {7 or 8 or 9}.

我们可以基于两列创建逻辑索引

i1 <- data[,2]==data[,3] & data[,2] %in% 7:9 & data[,3] %in% 7:9
data[i1, 2:3] <- NA

或使用Reduce&

data[Reduce(`&`, lapply(data[2:3], `%in%`, 7:9)), 2:3] <- NA

数据

data <- structure(list(col1 = 1:10, col2 = c(7, 2, 4, 5, 9, 2, 1, 8, 
2, 4), col3 = c(3, 2, 5, 6, 9, 3, 1, 8, 2, 4)), .Names = c("col1", 
 "col2", "col3"), row.names = c(NA, -10L), class = "data.frame")

相关内容

  • 没有找到相关文章

最新更新