2014-02-21 26 views
0

我有一個大型數據框可跟蹤累積獎金式遊戲的銷售額。累積獎金直到有人點擊它,然後重置爲100000或125000.我想在整個數據中累積獎金。數據看起來像這樣:根據另一列「重置」中的值對實例進行連續編號

sales  jp newrun 
367890 125000 1 
359497 225000 0 
686205 420000 0 
693497 560000 0 
405268 125000 1 
316572 125000 1 
438263 225000 0 
586050 375000 0 
902894 600000 0 
377326 125000 1 
369216 225000 0 
400330 125000 1 
433491 225000 0 
681295 410000 0 
881837 600000 0 

其中newrun是一個虛擬表示頭獎重置。這裏是dput():

structure(list(sales = c(367890, 359497, 686205, 693497, 405268, 
316572, 438263, 586050, 902894, 377326, 369216, 400330, 433491, 
681295, 881837), 
    jp = c(125000, 225000, 420000, 560000, 125000, 
    125000, 225000, 375000, 6e+05, 125000, 225000, 125000, 225000, 
    410000, 6e+05), 
    newrun = c(1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 
1L, 0L, 1L, 0L, 0L, 0L)), .Names = c("sales", "jp", "newrun"), row.names = c(NA, 
    15L), class = "data.frame") 

我期待直到結束:

sales  jp newrun run 
367890 125000 1  1 
359497 225000 0  1 
686205 420000 0  1 
693497 560000 0  1 
405268 125000 1  2 
316572 125000 1  3 
438263 225000 0  3 
586050 375000 0  3 
902894 600000 0  3 
377326 125000 1  4 
369216 225000 0  4 
400330 125000 1  5 
433491 225000 0  5 
681295 410000 0  5 
881837 600000 0  5 

我想:這幾乎工作

>runs<-c(1, cumsum(diff(as.logical(rowSums(
    c5a[c("newrun")] != 0)))>0) + 1) 

,但它不承認實例頭獎在第一天(當時是$ 100,000或$ 125,000)。它只是在下一次運行中混合了這些(所以,在上面的例子中,不是跑1,1,1,1,2,3,3,3,3,而是跑到1,1,1,1,2 ?,2,2,2,2

我缺少什麼

回答

0

我錯過了什麼或者你只是想:

c5a$run <- cumsum(c5a$newrun) 
c5a 
    sales  jp newrun run 
1 367890 125000  1 1 
2 359497 225000  0 1 
3 686205 420000  0 1 
4 693497 560000  0 1 
5 405268 125000  1 2 
6 316572 125000  1 3 
7 438263 225000  0 3 
8 586050 375000  0 3 
9 902894 600000  0 3 
10 377326 125000  1 4 
11 369216 225000  0 4 
12 400330 125000  1 5 
13 433491 225000  0 5 
14 681295 410000  0 5 
15 881837 600000  0 5 
+0

都能跟得上我顯然公正的方式過想什麼,需要要做到這一點,謝謝。 – datahappy

+0

大聲笑,它有時會發生;-) – Victorp

相關問題