簡體   English   中英

R時間序列周期減去?

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

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