删除特定列的行

时间:2016-10-25 19:24:58

标签: r dataframe duplicates rows

我想删除列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

1 个答案:

答案 0 :(得分:0)

是的,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