我想创建一个变量(例如reap),只有当某些列的元素与另一行的元素重复时才取值TRUE,但其他列的值不同。 样本数据可能会澄清我的问题:
V1 V2 V3
1. a b c
2. a b d
3. e f g
4. e f g
例如,如果我们想要一个变量值为TRUE,当行具有相同的V1和V2但不同的V3时,则该变量应如下所示:
V1 V2 V3 reap
1. a b c TRUE
2. a b d TRUE
3. e f g FALSE
4. e f g FALSE
非常感谢你的帮助。
答案 0 :(得分:0)
一个想法是识别每列的所有重复项,并使用rowSums
创建逻辑向量并设置条件!= ncol(df)
rowSums(sapply(df, function(i) duplicated(i)|duplicated(i, fromLast = TRUE))) != ncol(df)
#[1] TRUE TRUE FALSE FALSE
仅考虑第三栏
m1 <- sapply(df, function(i) duplicated(i)|duplicated(i, fromLast = TRUE))
rowSums(m1) == 2 & !m1[,3]
#[1] TRUE TRUE FALSE FALSE