[英]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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.