如何保持真正的独特行?

How to keep the true uniques row?

这里是一个矩阵的例子,

A B C
1 1 1
1 1 4
1 2 4
2 1 1
3 1 1
3 1 2

我只想提取在 A 和 B 中唯一的行。 我不能使用 unique、duplicate 等,因为它们总是保留我重复的行之一。

我希望得到的最终结果是:

A B C
1 2 4
2 1 1

我该怎么做? 谢谢

这里有几个选项 -

  1. 基础 R -
cols <- c('A', 'B')
res <- df[!(duplicated(df[cols]) | duplicated(df[cols], fromLast = TRUE)), ]
res

#  A B C
#3 1 2 4
#4 2 1 1
  1. dplyr -
library(dplyr)
df %>% group_by(A, B) %>% filter(n() == 1) %>% ungroup

# A tibble: 2 x 3
#      A     B     C
#  <int> <int> <int>
#1     1     2     4
#2     2     1     1

data.table

df <- data.frame(
  A = c(1L, 1L, 1L, 2L, 3L, 3L),
  B = c(1L, 1L, 2L, 1L, 1L, 1L),
  C = c(1L, 4L, 4L, 1L, 1L, 2L)
)

library(data.table)
setDT(df)[, .SD[.N == 1], by = list(A, B)]
#>    A B C
#> 1: 1 2 4
#> 2: 2 1 1

reprex package (v2.0.1)

于 2022-02-28 创建