小编Mic*_*ill的帖子

在dplyr中"转发"累积金额

在从纵向研究中检查数据集时,我通常dplyr从原始数据的分析链中得到这样的结果:

df = data.frame(n_sessions=c(1,2,3,4,5), n_people=c(59,89,30,23,4))
Run Code Online (Sandbox Code Playgroud)

即,此时有多少参与者完成了一定数量的评估.

虽然知道有多少人完成了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
Run Code Online (Sandbox Code Playgroud)

生成累积总和很简单:

mutate(df, cumsum = cumsum(n_people))
Run Code Online (Sandbox Code Playgroud)

什么是生成可以纳入dplyr分析链的"转发累积金额"的表达式?我猜这cumsum需要n_people在通过n_sessions降序排序之后应用,但是在保留数据帧的原始顺序的同时不能完全理解如何得到答案.

r dplyr

5
推荐指数
1
解决办法
2144
查看次数

标签 统计

dplyr ×1

r ×1