最长日期的重复值子集数据框

时间:2019-02-25 17:13:31

标签: r dplyr duplicates

我下面有一个样本数据集:

df

      Date    Col1    Col2    Col3   Col4   Col5
2019-02-25       A       A       B      4      7
2019-02-26       A       A       B     10      9
2019-02-24       B       C       D      9     12
2019-02-23       J       M       L     19     18
2019-02-23       B       C       D     11     78

如何对数据集进行子集设置,以便在df[,2:4]中存在重复项时,仅将最大日期保留在这些重复项之外?我仍然希望显示上一张表中的唯一值。

最终预期输出:

      Date    Col1    Col2    Col3   Col4   Col5
2019-02-26       A       A       B     10      9
2019-02-24       B       C       D      9     12
2019-02-23       J       M       L     19     18

2 个答案:

答案 0 :(得分:2)

我们可以使用tidyverse。在按第2列至第4列进行分组之后,slice行基于max imum'Date'

的索引
library(dplyr)
df %>%
  group_by_at(2:4) %>% 
  slice(which.max(Date))

或使用base R

df[with(df, ave(Date, Col1, Col2, Col3, FUN = max) == Date),]

答案 1 :(得分:1)

aggregate()中使用stats的内置解决方案:

merge(df, aggregate(Date ~ Col1 + Col2 + Col3, df, max))