根据时间戳分组项目

时间:2019-03-19 08:49:42

标签: 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')))

输出:

             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

有什么有效的建议吗?预先感谢!

1 个答案:

答案 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)))