我下面有一个样本数据集:
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
答案 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))