[英]'Forward' cumulative sum in dplyr
在檢查縱向研究的數據集時,我通常會從原始數據的dplyr
分析鏈中獲得如下結果:
df = data.frame(n_sessions=c(1,2,3,4,5), n_people=c(59,89,30,23,4))
即,在此時間點,有多少參與者完成了一定數量的評估的計數。
盡管了解多少人准確地完成了n次會話很有用,但我們更經常需要知道多少人至少完成了n次會話。 按下面的表格,一個標准的累計總和是不恰當的,我們要的是美國的價值觀n_total
列,它是一種在價值的“向前累計總和”的n_people
列。 也就是說,每行中的值應該是其自身值及其以外的所有值的總和,而不是標准的累積總和,標准累積總和是直至(包括)自身的所有值的總和:
n_sessions n_people n_total cumsum
1 59 205 59
2 89 146 148
3 30 57 178
4 23 27 201
5 4 4 205
生成累計和很簡單:
mutate(df, cumsum = cumsum(n_people))
用於生成可以合並到dplyr
分析鏈中的“前向累積總和”的表達式是什么? 我猜想在將n_sessions
降序排序后, cumsum
將需要應用於n_people
,但是在保留數據幀的原始順序的同時,我不太了解如何獲取答案。
您可以對逆向矢量求和,然后對結果求逆。 內置的rev函數在這里很有幫助:
mutate(df, rev_cumsum = rev(cumsum(rev(n_people))))
例如,在您的數據上返回:
n_sessions n_people rev_cumsum
1 1 59 205
2 2 89 146
3 3 30 57
4 4 23 27
5 5 4 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.