2016-04-29 124 views
0

我有數據集這樣的,如何結合行與某些條件?

> 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投射數據 –

回答

0

如果你想要得到的結果作爲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") 
2

這是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