删除 R 中重复的行

Remove rows that have a duplicate in R

我有

a <- c(rep("A", 3), rep("B", 3), rep("C",2), rep("D", 1))
b <- c(1,1,2,4,1,1,2,2,5)
df <-data.frame(a,b)

基于 df$a,我想 return 只有没有重复的值(那些只出现一次 df$a 的行),在这个例子中它将是 1 D 5

我已经尝试了 duplicate()!duplicate()unique(),但是 none 输出了我需要的。

一个选项

df[!(df$a %in% df$a[duplicated(df$a)]),]

  a b
9 D 5

dplyr最干净的方式:

library(dplyr)

df %>% group_by(a) %>%
   filter(n() == 1)

输出:

# A tibble: 1 x 2
# Groups:   a [1]
  a         b
  <chr> <dbl>
1 D         5

Base R,

x <- table(df[,1])

df[rep(x<2,x),]

给予,

#   a b
# 9 D 5

使用data.table

library(data.table)
setDT(df)
df[, tmp:= .N, by = a][tmp == 1, -"tmp"]
   a b
1: D 5