gpt4 book ai didi

r - dplyr 中的“转发”累积和

转载 作者:行者123 更新时间:2023-12-03 02:15:10 27 4
gpt4 key购买 nike

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

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

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

虽然了解有多少人完成了恰好 n 个 session 很有用,但我们更经常需要知道有多少人完成了至少 n 个 session 。如下表所示,标准累积和是不合适的,我们想要的是 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_peoplen_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

关于r - dplyr 中的“转发”累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196261/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com