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
我缺少什麼
都能跟得上我顯然公正的方式過想什麼,需要要做到這一點,謝謝。 – datahappy
大聲笑,它有時會發生;-) – Victorp