无论第1列还是第2列,过滤R中唯一观察的数据帧

时间:2017-01-31 11:50:42

标签: r dplyr

考虑以下工作示例。

person_A <- c(1,1,1,2,2,3,3,3,4,4,4,5,6)
person_B <- c(3,4,5,9,1,1,8,7,1,3,7,6,5)

df1 <- data.frame(person_A, person_B)

因此,在每一行中,我们都有person_Aperson_B

的ID

我想过滤df1并删除person_Aperson_B的重复组合,并且只将唯一组合作为输出。 但是,我们必须检查切换后的组合person_A - person_Bperson_B - person_A之间)

换句话说,我想删除红色阴影部分

enter image description here

1 个答案:

答案 0 :(得分:1)

我们可以使用duplicated。我们按行(apply)使用sortMARGIN = 1元素,然后转置输出,使用duplicated查找重复元素为逻辑vector,否定(!),仅限unique

的子集
df1[!duplicated(t(apply(df1, 1, sort))),]