我的数据:
var1 <- c(1, 2, 3, 4, 5, 28, 6)
var2 <- c(2, 1, 10, 11, 6, 78, 5)
var3 <- c(100,101,102,0,0,0, 0)
dataset<- data.frame(var1, var2, var3)
datset
我的结果:
var1 var2 var3
1 2 100
2 1 101
3 10 102
4 11 0
5 6 0
28 78 0
6 5 0
我在var1
和var2
列中有两种重复值组合(按任意顺序):
第一个:
var1 var2 var3
1 2 100
2 1 101
第二个:
var1 var2 var3
5 6 0
6 5 0
预期结果:
首先观察多个列中的每个重复的值组合(var1
和var2
):
var1 var2 var3
1 2 100
3 10 101
4 11 102
5 6 0
28 78 0
完整数据集csv
答案 0 :(得分:3)
我们可以在前两列的每一行的duplicated
ed元素上使用sort
来获得预期的输出
dataset[!duplicated(t(apply(dataset[1:2], 1, sort))),]
或另一种选择是在duplicated
和pmin
pmax
library(data.table)
setDT(dataset)[!duplicated(dataset[, .(var1 = pmin(var1, var2), var2 = pmax(var1, var2))])]
基于OP的完整数据集
df1 <- na.omit(read.csv(file.choose(), row.names = 1))
out <- df1[!duplicated(t(apply(df1[1:2], 1, sort))),]
dim(out)
#[1] 113 3
out2 <- setDT(df1)[!duplicated(df1[, .(from = pmin(from, to), to = pmax(from, to))])]
dim(out2)
#[1] 113 3