如何将行与某些条件结合起来?
How to combine row with some condition?
我有这样的数据集,
> data
ID AccessTime ReferrerCode
101 01:17:40 910
103 01:27:53 135
103 01:33:12 222
202 02:04:11 921
202 03:40:30 106
103 03:45:02 734
我想像这样转换我的数据集,
> data
ID ReferrerCode
101 910
103 135 222
202 921
202 106
103 734
我的条件是如果数据有相同的ID和相同的AccessTime小时,ReferrerCode将被合并。我应该怎么做才能实现它?
这是一个 base
R 解决方案,其中 aggregate()
和 sub()
从 AccessTime
.
中提取小时
aggregate(ReferrerCode ~ ID + sub(':.*$', '', AccessTime), c, data=data)[,-2]
# ID ReferrerCode
#1 101 910
#2 103 135, 222
#3 202 921
#4 103 734
#5 202 106
如果您想在 ReferrerCode
中获得 character
的结果,请使用:
aggregate(ReferrerCode ~ ID + hour(AccessTime), data, FUN=function(x) paste(x, collapse=" "))[,c(1,3)]
ID ReferrerCode
1 101 910
2 103 135 222
3 202 921
4 103 734
5 202 106
我假设 AccessTime
是 POSIXlt
格式。从 character
您可以通过
转换
data$AccessTime <- as.POSIXlt(data$AccessTime, format="%H:%M:%S")
我有这样的数据集,
> data
ID AccessTime ReferrerCode
101 01:17:40 910
103 01:27:53 135
103 01:33:12 222
202 02:04:11 921
202 03:40:30 106
103 03:45:02 734
我想像这样转换我的数据集,
> data
ID ReferrerCode
101 910
103 135 222
202 921
202 106
103 734
我的条件是如果数据有相同的ID和相同的AccessTime小时,ReferrerCode将被合并。我应该怎么做才能实现它?
这是一个 base
R 解决方案,其中 aggregate()
和 sub()
从 AccessTime
.
aggregate(ReferrerCode ~ ID + sub(':.*$', '', AccessTime), c, data=data)[,-2]
# ID ReferrerCode
#1 101 910
#2 103 135, 222
#3 202 921
#4 103 734
#5 202 106
如果您想在 ReferrerCode
中获得 character
的结果,请使用:
aggregate(ReferrerCode ~ ID + hour(AccessTime), data, FUN=function(x) paste(x, collapse=" "))[,c(1,3)]
ID ReferrerCode
1 101 910
2 103 135 222
3 202 921
4 103 734
5 202 106
我假设 AccessTime
是 POSIXlt
格式。从 character
您可以通过
data$AccessTime <- as.POSIXlt(data$AccessTime, format="%H:%M:%S")