R 基于时间戳对项目进行分组
我有一个数据框,其中包含如下唯一行:R 基于时间戳对项目进行分组,r,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',
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 | 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
我想对具有相同时间戳的项目进行分组,如果出现一次,则始终保持分组项目的相同顺序。所以我的结果应该是这样的:
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 | 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
有什么有效的建议吗?提前谢谢 您可以使用base 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)))
aggregateText~Timestamp,df,functionx-pastex,collapse=|?有没有办法让C | a出现一次而不是a | C?对它进行排序?aggregateText~Timestamp,df,functionx pastesortx,discreating=T,collapse=|?注意,通过排序,最后一个条目将是C | B | A而不是C | A | Bso,您是否只需要A之前的C,其余条目将在这两个条目之后?这是一个可行的解决方案,因此我接受它作为答案!也要感谢@RonakShah!