我有一个像这样的数据框:
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