【问题标题】:Removing rows with respect to specific columns [duplicate]删除与特定列相关的行 [重复]
【发布时间】:2016-10-25 19:24:58
【问题描述】:

我想删除列 a 和 b 具有相同值的所有行。此外,如果 a 和 b 相同,则 c 列应包含最新日期。我正在考虑根据 c 列对数据框进行排序,然后删除所有重复项(a 和 c)。据我了解,该功能以特定顺序“复制”过程。

例如:

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
    > b <- c(1,1,2,4,1,1,2,2)
    > c <- c("2016-10-01", "2016-10-02", "2016-10-03", "2016-10-04", "2016-10-04", "2016-10-05", "2016-10-06", "2016-10-07")
    > df <-data.frame(a,b,c)
    > df
      a b          c
    1 A 1 2016-10-01
    2 A 1 2016-10-02
    3 A 2 2016-10-03
    4 B 4 2016-10-04
    5 B 1 2016-10-04
    6 B 1 2016-10-05
    7 C 2 2016-10-06
    8 C 2 2016-10-07

我想得到以下数据框:

      a b          c
    1 A 1 2016-10-02
    2 A 2 2016-10-03
    3 B 4 2016-10-04
    4 B 1 2016-10-05
    5 C 2 2016-10-07

【问题讨论】:

标签: r dataframe duplicates rows


【解决方案1】:

是的,duplicated 按特定顺序处理。要从底部开始,请使用fromLast=TRUE

> df[!duplicated( df[,1:2], fromLast=TRUE ), ]
  a b          c
2 A 1 2016-10-02
3 A 2 2016-10-03
4 B 4 2016-10-04
6 B 1 2016-10-05
8 C 2 2016-10-07

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2020-12-01
    • 2019-03-29
    • 2022-01-23
    • 2020-12-18
    • 2020-07-08
    • 1970-01-01
    • 2018-12-14
    • 2021-10-01
    相关资源
    最近更新 更多