R-如何筛选出具有唯一标识符的重复数据?

R-如何筛选出具有唯一标识符的重复数据?,r,dplyr,R,Dplyr,我有一个数据集是调查数据。如果我使用distinct(x),代码将不会读取任何重复项,因为我有一个“Survey ID”列,该列将始终不同 x <- data.frame("Survey ID" = 1001:1008, "First Initial" = c("M","P","S","B","H", "P", "L", "A"), "Last Initial" = c("S","J", "A", "P", "Q", "J",

我有一个数据集是调查数据。如果我使用distinct(x),代码将不会读取任何重复项,因为我有一个“Survey ID”列,该列将始终不同

x <- data.frame("Survey ID" = 1001:1008,
                "First Initial" = c("M","P","S","B","H", "P", "L", "A"),
                "Last Initial" = c("S","J", "A", "P", "Q", "J", "P", "C"),
                "Age" = c(34,41,52,61,25,41,19,58),
                "Gender" = c("M", "M", "M", "F","M","M","F","M"),
                "Ethnicity" = c(2,2,1,1,3,2,1,4),
                "Veteran Status" = c("A","Y","N","Y","N","Y","N","N")
                )


x我们可以在

library(dplyr)
x %>%
    distinct_at(-1, .keep_all = TRUE)
如果要指定列名

x %>%
  distinct_at(vars(Age, Gender), .keep_all = TRUE)

或者另一个选项是
unique
from
data.table

library(data.table)
unique(setDT(x), by = names(x)[-1])

也可以对除第一列以外的所有列执行以下操作:

x[!duplicated(x[,-1]),]
或对于选定列:

x[!duplicated(x[,c("Age","Gender"),])

两者都将保留第一个复制行。

这太完美了!如果我只想过滤某些列呢?就像我的数据集x中的“年龄”和“性别”列一样?谢谢,这太棒了!我真的很感谢你的帮助!
x[!duplicated(x[,c("Age","Gender"),])