我有一个像这样的数据框:

df <- data.frame(Timestamp=as.POSIXct(strptime(c('2018-01-08 13:26:53',
                                                 '2018-01-08 13:33:33',
                                                 '2018-01-08 13:45:12',
                                                 '2018-01-08 14:26:22',
                                                 '2018-01-08 14:28:34',
                                                 '2018-01-08 14:31:32',
                                                 '2018-01-08 15:11:14',
                                                 '2018-01-08 15:13:16',
                                                 '2018-01-08 15:25:19'), "%Y-%m-%d %H:%M:%OS")),
                 Text=c('A', 'A', 'A', 'B', 'C', 'C', 'A', 'A', 'B'))

输出:
            Timestamp Text
1 2018-01-08 13:26:53    A
2 2018-01-08 13:33:33    A
3 2018-01-08 13:45:12    A
4 2018-01-08 14:26:22    B
5 2018-01-08 14:28:34    C
6 2018-01-08 14:31:32    C
7 2018-01-08 15:11:14    A
8 2018-01-08 15:13:16    A
9 2018-01-08 15:25:19    B

我只想删除重复的重复项,并且只保留最新的行。所以我想要一个这样的数据框:
            Timestamp Text
1 2018-01-08 13:45:12    A
2 2018-01-08 14:26:22    B
3 2018-01-08 14:31:32    C
4 2018-01-08 15:13:16    A
5 2018-01-08 15:25:19    B

有任何想法吗?提前致谢!

最佳答案

我们可以使用rleid中的data.table创建组,并从每个组中仅选择max Timestamp

library(dplyr)
library(data.table)

df %>%
  group_by(group = rleid(Text)) %>%
  slice(which.max(Timestamp)) %>%
  ungroup() %>%
  select(-group)

# Timestamp           Text
#  <dttm>              <fct>
#1 2018-01-08 13:45:12 A
#2 2018-01-08 14:26:22 B
#3 2018-01-08 14:31:32 C
#4 2018-01-08 15:13:16 A
#5 2018-01-08 15:25:19 B

07-24 09:51
查看更多