【发布时间】:2016-08-28 22:09:51
【问题描述】:
在检查纵向研究的数据集时,我通常会从原始数据的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_sessions 降序排序后应用于n_people,但我不知道如何在保留数据框的原始顺序的同时获得答案。
【问题讨论】: