R - 如何过滤掉具有唯一标识符的重复数据?

RL_*_*Pug 5 r dplyr

我有一个数据集是调查数据。如果我使用distinct(x),代码将不会读取任何重复项,因为我有一个始终不同的“调查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")
                )

Run Code Online (Sandbox Code Playgroud)

我可以用

y <- distinct(x[,-1]) 
Run Code Online (Sandbox Code Playgroud)

它会过滤掉调查 ID,但我需要新数据集中的调查 ID。如何删除重复项但保留重复行之一的调查 ID?

谢谢

akr*_*run 5

我们可以用distinct_at

library(dplyr)
x %>%
    distinct_at(-1, .keep_all = TRUE)
Run Code Online (Sandbox Code Playgroud)

如果我们想指定列名

x %>%
  distinct_at(vars(Age, Gender), .keep_all = TRUE)
Run Code Online (Sandbox Code Playgroud)

或者另一个选择unique来自data.table

library(data.table)
unique(setDT(x), by = names(x)[-1])
Run Code Online (Sandbox Code Playgroud)