我有一个数据集是调查数据。如果我使用 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")
                )


我可以用
y <- distinct(x[,-1])

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

谢谢

最佳答案

我们可以使用 distinct_at

library(dplyr)
x %>%
    distinct_at(-1, .keep_all = TRUE)

如果我们要指定列名
x %>%
  distinct_at(vars(Age, Gender), .keep_all = TRUE)

或者另一个选项是来自 uniquedata.table
library(data.table)
unique(setDT(x), by = names(x)[-1])

关于R - 如何过滤掉具有唯一标识符的重复数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59271041/

10-12 13:56
查看更多