根据两列选择非重复记录

时间:2018-08-09 00:56:41

标签: r duplicates subset

假设我有:

V1  V2  id
R1  R2  1
R1  R3  2
R1  R5  3
R1  R7  4
R2  R1  5
R2  R3  6
R2  R8  7
R3  R1  8
R3  R2  9
R3  R6  10
R4  R9  11

生成数据集的代码:

dat1 <- data.frame(
  V1 = c(rep("R1", 4), rep("R2", 3), rep("R3", 3), "R4"),
  V2 = c("R2", "R3", "R5", "R7", "R1", "R3", "R8", "R1", "R2", "R6", "R9"), 
  stringsAsFactors = FALSE
)

dat1$id <- 1:nrow(dat1)

我想基于V1和V2列选择非重复记录, 例如id 1和id 5需要被视为相同的记录,因此应选择id 1。因此理想的结果是:

V1  V2  id
R1  R2  1
R1  R3  2
R1  R5  3
R1  R7  4
R2  R3  6
R2  R8  7
R3  R6  10
R4  R9  11

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

apply sort与V1和V2,然后使用duplicated找到重复的项目

dat1[!duplicated(t(apply(dat1[,-3],1,sort))),]
   V1 V2 id
1  R1 R2  1
2  R1 R3  2
3  R1 R5  3
4  R1 R7  4
6  R2 R3  6
7  R2 R8  7
10 R3 R6 10
11 R4 R9 11