我有這個data.frame
稱爲dum
累積和在數據幀的中心開始 - R的
dummy <- data.frame(label = "a", x = c(1,1,1,1,0,1,1,1,1,1,1,1,1))
dummy1 <- data.frame(label = "b", x = c(1,1,1,1,1,1,1,1,0,1,1,1,1))
dum <- rbind(dummy,dummy1)
我所試圖做的是採取的dum
的x
列從0開始的累計總和。總和將按照label
列進行分組,該列可以在dplyr
或plyr
中執行。我正在努力的部分是如何從x
中的0位置開始累積總和並向外移動。
產生的data.frame
應該是這樣的:
>dum
label x output
1 a 1 4
2 a 1 3
3 a 1 2
4 a 1 1
5 a 0 0
6 a 1 1
7 a 1 2
8 a 1 3
9 a 1 4
10 a 1 5
11 a 1 6
12 a 1 7
13 a 1 8
14 b 1 8
15 b 1 7
16 b 1 6
17 b 1 5
18 b 1 4
19 b 1 3
20 b 1 2
21 b 1 1
22 b 0 0
23 b 1 1
24 b 1 2
25 b 1 3
26 b 1 4
這將需要在數以百萬計的數據行被重複數千次。
像往常一樣,感謝您的任何和所有幫助
效果很好。爲了不浪費我現在刪除的答案,對於一個組中的多個0的這個函數的推廣將是:在2300萬行數據框(在這個例子中是dum $ label)的數據幀上花費了大約5分鐘的時間14000 – user2813055
爲了不浪費我現在刪除的答案, 'do.call(pmin,lapply(which(dum $ x == 0),function(n)abs(n-seq_along(dum $ x))))' – thelatemail