我希望创建一个列,使其等于data$Rating的累加和,满足两个条件在第3和第4列中为真,具体来说就是data$Year<当前年份和data$ID等于当前ID。换言之,这应该计算每个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中可以很好地解决我的问题),如果语言不够准确,请谅解。
library(dplyr); df %>% group_by(ID) %>% arrange(Year) %>% mutate(cumSum = cumsum(Rating) - Rating)
。 - talat