R 双重比较与替代
我有个问题。如果两列满足两个条件,我需要替换它们:R 双重比较与替代,r,replace,compare,conditional-statements,R,Replace,Compare,Conditional Statements,我有个问题。如果两列满足两个条件,我需要替换它们: 我想从数据中比较的两列必须相等(在同一行中成对) 两列必须等于7、8或9 如果满足条件,R应替换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 当两列相等且等
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
当两列相等且等于
{7或8或9}时,R应比较NA的两列。
我们可以基于这两列创建逻辑索引
i1 <- data[,2]==data[,3] & data[,2] %in% 7:9 & data[,3] %in% 7:9
data[i1, 2:3] <- NA
数据
数据谢谢,但如果一列中的7和第二列中的8在同一行中,则无法替换。如果我想比较其他值(不是7:9,例如1,4,8),我应该创建一个向量吗?c(1,4,8)?谢谢。@BartekCzech在第一种方法中,由data[,2]==data[,3]
处理。第二,是Reduce(&“
)检查它们是否都是真的。如果你想比较c(1,4,8),用它代替7:9,即Reduce(&)”,lapply(数据[2:3],%In%,c(1,4,8))
你尝试了什么?为什么不起作用?代码编写服务也不起作用。
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")