我有问题。如果满足两个条件,我需要替换两个列:
- 我想从数据比较的两列必须相等(同一行成对)。
- 两列必须等于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")