如何结合行与某些条件?
问题描述:
我有数据集这样的,如何结合行与某些条件?
> 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
我的条件ReferrerCode会如果数据具有相同的ID和同一时间合并的AccessTime。我该怎么做才能做到这一点?
答
如果你想要得到的结果作为character
在ReferrerCode
使用这样的:
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")
答
这是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
你能提供一些示例数据与dput?访问时间是什么格式?我会添加一个列确认小时,然后使用reshape2投射数据 –