r - 如何通过 dplyr 进行 2 组的 cumsum?
问题描述
我写了以下代码:
set.seed(20)
dat <- data.frame(item=c(rep("i1", 10), rep("i2", 10)),
choice=c(sample(1:4, 20, replace = TRUE)))
我需要通过 2 项获得每个选择的累积总和:
item choice n cumsum
1 i1 1 2 2
2 i1 2 3 5
3 i1 3 1 6
4 i1 4 4 10
5 i2 1 3 3
6 i2 2 3 6
7 i2 3 2 8
8 i2 4 2 10
我写:
dat %>%
group_by(item, choice) %>%
count() %>%
mutate(n) %>%
mutate(cum=cumsum(n))
并得到:
item choice n cum
<fct> <int> <int> <int>
1 i1 1 2 2
2 i1 2 3 3
3 i1 3 1 1
4 i1 4 4 4
5 i2 1 3 3
6 i2 2 3 3
7 i2 3 2 2
8 i2 4 2 2
我应该如何修改我的代码以获得我需要的东西?
解决方案
看起来你只需要
dat %>%
group_by(item, choice) %>%
summarize(n=n()) %>%
mutate(cum = cumsum(n))
推荐阅读
- c# - C# 中的浮点/双精度 Math.Round
- c - c中的getenv + string和转换类型
- javascript - 无法在 django/ChatterBot 示例中使用 jQuery 的 .html(text) 方法加载图像
- java - ARCore 世界对齐
- python - 在同一图表中为列中的每个不同条目绘制多条线
- sql-server - SQL 大容量复制,但重建索引耗时过长
- excel - 打开工作簿时自动运行宏
- netlogo - 强制 NetLogo Behaviorspace 从特定的 behaviorspace-run-number 开始运行
- ios - 如何从 webView 解析数据以在代码中使用
- scala - 如何在 spark 中执行,即迭代组并将每个组一次保存为文件?