0

有一个用户在 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?)

4

1 回答 1

0

你的问题没有很好的定义。但我猜您尝试按事件和按周拆分数据。然后对于每个事件尝试计算由定义的计数返回:

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
于 2013-08-14T11:23:28.540 回答