如何结合行与某些条件?

如何结合行与某些条件?

问题描述:

我有数据集这样的,如何结合行与某些条件?

> 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。我该怎么做才能做到这一点?

+0

你能提供一些示例数据与dput?访问时间是什么格式?我会添加一个列确认小时,然后使用reshape2投射数据 –

如果你想要得到的结果作为characterReferrerCode使用这样的:

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 

我认为AccessTimePOSIXlt格式。从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