我有一个具有唯一行的数据框,如下所示:
df <- unique(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 13:45:12',
'2018-01-08 14:28:34',
'2018-01-08 14:31:32',
'2018-01-08 14:31:32',
'2018-01-08 15:13:16',
'2018-01-08 15:25:19',
'2018-01-08 15:25:19',
'2018-01-08 15:25:19',
'2018-01-08 15:25:19'), "%Y-%m-%d %H:%M:%OS")),
Text=c('A', 'B', 'C', 'A', 'B', 'A', 'C', 'D', 'A', 'A', 'B', 'C')))
输出:
Timestamp Text
1 2018-01-08 13:26:53 A
2 2018-01-08 13:33:33 B
3 2018-01-08 13:45:12 C
4 2018-01-08 13:45:12 A
5 2018-01-08 14:28:34 B
6 2018-01-08 14:31:32 A
7 2018-01-08 14:31:32 C
8 2018-01-08 15:13:16 D
9 2018-01-08 15:25:19 A
11 2018-01-08 15:25:19 B
12 2018-01-08 15:25:19 C
我想对具有相同时间戳的项目进行分组,并且如果分组项目出现一次,则始终保持相同顺序。所以我的结果应该像这样:
Timestamp Text
1 2018-01-08 13:26:53 A
2 2018-01-08 13:33:33 B
3 2018-01-08 13:45:12 C | A
5 2018-01-08 14:28:34 B
7 2018-01-08 14:31:32 C | A
8 2018-01-08 15:13:16 D
9 2018-01-08 15:25:19 C | A | B
有什么有效的建议吗?预先感谢!
答案 0 :(得分:1)
您可以使用底数R
df <- unique(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 13:45:12',
'2018-01-08 14:28:34',
'2018-01-08 14:31:32',
'2018-01-08 14:31:32',
'2018-01-08 15:13:16',
'2018-01-08 15:25:19',
'2018-01-08 15:25:19',
'2018-01-08 15:25:19',
'2018-01-08 15:25:19'), "%Y-%m-%d %H:%M:%OS")),
Text=c('A', 'B', 'C', 'A', 'B', 'A', 'C', 'D', 'A', 'A', 'B', 'C')))
agg<- aggregate(df[,2], list(df[,1]), function(x) paste0(unique(x)))