【问题标题】:In R, conditionally remove duplicate rows within ID, Date, and Event在 R 中,有条件地删除 ID、日期和事件中的重复行
【发布时间】:2022-01-02 05:25:36
【问题描述】:

背景

我有d,一个数据框:

d <- data.frame(ID = c("a","a","a","a", "b","b"),
                event = c("G12","G12","O99","O99","B4","B2"),
                date = as.Date(c("2011-01-01","2011-01-01","2011-12-23","2011-12-23","2011-01-01","2011-07-12")),
                stringsAsFactors=FALSE)

如您所见,ID a 有 4 行,其中 2 行是基于 eventdate 的重复(第 2 行和第 4 行是重复的)。

问题和期望的输出

我想通过要求R 删除ID 中具有相同eventdate 的行来删除这些重复行。换句话说,我想要看起来像这样的东西:

d <- data.frame(ID = c("a","a", "b","b"),
                event = c("G12","O99","B4","B2"),
                date = as.Date(c("2011-01-01","2011-12-23", "2011-01-01","2011-07-12")),
                stringsAsFactors=FALSE) 

我的尝试

我已经尝试过了,但还没有:

d2 <- subset(d, duplicated(d$ID, d$event))

有什么想法吗?

【问题讨论】:

  • 你需要d[!duplicated(d[1:2]),], duplicated - x 是单个参数。如果需要单独指定,请使用d %&gt;% distinct(ID, event, .keep_all = TRUE)
  • 我现在有一个小时的电话,但我一回到我的办公桌就试试这个。谢谢。

标签: r dplyr duplicates data.table


【解决方案1】:

一种选择是使用unique

unique(d)
#>   ID event       date
#> 1  a   G12 2011-01-01
#> 3  a   O99 2011-12-23
#> 5  b    B4 2011-01-01
#> 6  b    B2 2011-07-12

使用data.table

library(data.table)

dt <- data.table(d)

unique(dt[, .(event, date), by = ID])

reprex package (v2.0.1) 于 2021-11-23 创建

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 2023-03-07
    • 2015-08-31
    • 2021-06-09
    • 2020-05-22
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多