好的,我想用一個高效優雅的解決方案(如data.table或dplyr)來解決這個問題。不同分母的分數累積和R
定義:
DT = data.table(group=c(rep("A",3),rep("B",5)),value=c(2,9,2,3,4,1,0,3))
time group value
1: 1 A 2
2: 2 A 9
3: 3 A 2
4: 1 B 3
5: 2 B 4
6: 3 B 1
7: 4 B 0
8: 5 B 3
我想要得到的是通過他們已經觀察到時間的時刻通過逆順序劃分值的組累計總和。
time group value RESULT
1: 1 A 2 2.000000
2: 2 A 9 10.000000
3: 3 A 2 7.166667
4: 1 B 3 3.000000
5: 2 B 4 5.500000
6: 3 B 1 4.000000
7: 4 B 0 2.583333
8: 5 B 3 4.933333
在管道5中的結果是: 4/1 + 3/2 = 5.5
因爲在時刻2,基團B具有2個觀察值,最後被除以1和在管線6中的結果是先前由1 下一頁: 1/1 + 4/2+ 3/3 = 4
由於在時間3時,基團B具有3周的觀察,最後是由1,以前的除以2及靜止以前由3.在第7行,0/1 + 1/2 + 4/3 + 3/4 = 2.583333
,等等...
的數據很大,所以避免循環是必不可少的!
'DT [,.SD]'和'DT'是一樣的,所以你只是爲了讓括號很好地對齊? – Frank
@Frank是的我更關心格式和可讀性比內存副本。這只是我而已 –