[英]R time series period subtract?
3周前有一個用戶事件的樣本數據:
> subret
uid event_name date count
2 10225 _e_io 2013-07-23 2
3 10225 _e_io 2013-07-24 3
4 10225 _e_io 2013-07-25 7
5 10225 _e_io 2013-07-26 6
6 10225 _e_io 2013-07-27 11
7 10225 _e_io 2013-07-28 4
8 10225 _e_io 2013-07-29 4
9 10225 _e_io 2013-07-30 2
10 10225 _e_io 2013-07-31 3
11 10225 _e_io 2013-08-01 1
12 10225 _e_io 2013-08-02 5
13 10225 _e_io 2013-08-03 2
14 10225 _e_io 2013-08-04 9
15 10225 _e_io 2013-08-05 13
16 10225 _e_io 2013-08-06 4
17 10225 _e_io 2013-08-07 14
18 10225 _e_io 2013-08-08 15
19 10225 _e_io 2013-08-09 11
20 10225 _e_io 2013-08-10 7
21 10225 _e_io 2013-08-11 2
22 10225 _e_renderer-load 2013-08-06 3
23 10225 _e_unknown 2013-07-29 1
24 10225 _e_unknown 2013-07-31 1
25 10225 _e_unknown 2013-08-01 1
26 10225 _e_unknown 2013-08-02 1
27 10225 _e_unknown 2013-08-06 4
28 10225 _e_unknown 2013-08-08 7
29 10225 _e_unknown 2013-08-10 3
我不知道如何獲取事件每周減去的值。 提供丟失的日期計數,很難對一個事件進行一次操作。 R是否支持將值減去作為一致的鍵匹配(例如merge
)?
這意味着:
> ta <- (subret[subret$event_name == "_e_io" & subret$date <= as.Date("2013-07-29"), ])
> tb <- (subret[subret$event_name == "_e_io" & subret$date > as.Date("2013-07-29") & subret$date <= as.Date("2013-08-05"), ])
> (ta$count - tb$count / ta$count)
[1] 1.000000 2.000000 6.857143 5.166667 10.818182 1.750000 0.750000
我可以每周提高每天的速度。
抱歉,操作優先級。 每周更改的速度應為:
> ((ta$count - tb$count) / ta$count)
[1] 0.0000000 0.0000000 0.8571429 0.1666667 0.8181818 -1.2500000 -2.2500000
對於_e_io
來說,一周的日期是完全可以的,但是對於其他人來說,一周的日期是不完全的。 是真的,我需要先對齊日期嗎? (使用merge
?)
您的問題定義不明確。 但是我想您嘗試按事件和周划分數據。 然后針對每個事件,嘗試計算由以下項定義的計數返回值:
Count_week[i]- count_week[i+1]/count_week[i]
您可以使用by
來按事件進行處理,然后每周將時間序列按周划分(困難的部分)。
by(subret,subret$event_name,function(x){
nn <- nrow(x)
x.week <- split(x$count,cut(seq(nn),
c(seq(0,nn,7),max(nn))))
ll <- length(x.week)
res <-
if(ll >1)
lapply(seq(ll-1),function(y){
x.week[[y]]-x.week[[y+1]]/x.week[[y]]
})
else NA
})
[1]]
[1] 1.000000 2.000000 6.857143 5.166667 10.818182 1.750000 0.750000
[[2]]
[1] 0.000000 -1.666667 -14.000000 2.800000 -1.500000 8.777778 12.692308
------------------------------------------------------------------------------------------
subret$event_name: _e_renderer-load
[1] NA
------------------------------------------------------------------------------------------
subret$event_name: _e_unknown
[1] NA
Warning message:
In x.week[[y + 1]]/x.week[[y]] :
longer object length is not a multiple of shorter object length
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.