在检查纵向研究的数据集时,我通常会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
分析链中的“前向累积总和”的表达式是什么?我猜想这cumsum
需要n_people
在n_sessions
降序排序之后应用,但是在保留数据帧的原始顺序的同时还不能完全理解如何获得答案。
您可以对逆向矢量求和,然后对结果求逆。内置的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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句