【发布时间】:2015-08-19 13:57:43
【问题描述】:
我想创建一个等于 data$Rating 的运行总和的列,假设第 3 列和第 4 列中的两个条件为真,特别是 data$Year
换句话说,这应该计算每个 id 到上一年的累积评分总和。它应该对数据框中的每一行(大约 50,000 行)执行此操作。鉴于数据框的大小,如果可能的话,我宁愿不要循环。
我在下面提供了一个简短的示例...
> head(data[,c(3,4,13)])
Year ID Rating CumSum
1 2010 13578 2 0
2 2010 13579 1 0
3 2010 13575 3 0
4 2011 13575 4 3
5 2012 13578 3 2
6 2012 13579 2 1
7 2012 13579 4 1
我来自电子表格背景,所以我仍在考虑 SUMIFS 等(这将很好地解决我在 Excel 中的问题),如果语言不准确,敬请见谅。
【问题讨论】:
-
一个ID可以有两行相同的年份条目吗?如果没有,你可以试试
library(dplyr); df %>% group_by(ID) %>% arrange(Year) %>% mutate(cumSum = cumsum(Rating) - Rating) -
是的,一个ID在同一年可以出现多次
-
所以请改进您的示例数据集/所需的输出
-
更新了示例以证明 ID 可以在一年内出现多次
标签: r