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
?)
答案 0 :(得分: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