簡體   English   中英

如何結合行與某些條件?

[英]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

我假設AccessTimePOSIXlt格式。 character可以轉換為

data$AccessTime <- as.POSIXlt(data$AccessTime, format="%H:%M:%S")

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM