首页 > 解决方案 > 当 R 中有重复时,保留最新的观察结果

问题描述

我有以下数据。

  date                         var1    level       score_1     score_2
   2020-02-19 12:10:52.166661    dog      n1           1           3
   2020-02-19 12:17:25.087898    dog      n1           3           6
   2020-02-19 12:34:27.624939    dog      n2           4           3
   2020-02-19 12:35:50.522116    cat      n1           2           0
   2020-02-19 12:38:49.547181    cat      n2           3           4

任何组合 var1 & level 都应该只有一个观察结果。我想消除重复并只保留最近的记录。在前面的例子中,第一行应该被删除,因为第 2 行的 dog-n1 是最近的。尽管如此,我想保留第 3 行,即使 var1 也等于“狗”,因为级别不同。

所以,我想获得什么:

  date                         var1    level       score_1     score_2
   2020-02-19 12:17:25.087898    dog      n1           3           6
   2020-02-19 12:34:27.624939    dog      n2           4           3
   2020-02-19 12:35:50.522116    cat      n1           2           0
   2020-02-19 12:38:49.547181    cat      n2           3           4

标签: rduplicates

解决方案


使用tidyverse

df %>%
group_by(var1, level) %>%
filter(date == max(date)) %>%
ungroup()

推荐阅读