#-----------------------------------------
有一个表格,包括id, t, dm, s这4列。其中
* id有重复。这里只列出id = 1,2的情况,但是真实数据中还有很多,id=1,2,...,100.
* t可以理解为时间,1-7天,或者1-7月等等。
* dm是另一个参数。
* s是一些要计算的数值。
根据这些来计算x的值。
#--------------------------------------------
计算过程是这样的:
第一,找到每一个id的最后一行。如果是最后一行,那么lastrow = 1,否则就是0.这个我已经搞定。
第二,根据t和dm的值,计算x在每个id最后一行的值(其他行x的值不用计算)。比方说,id = 1时,最后1行的t = 7,dm = 4。那么t - dm = 3。然后就从s的第三行开始累加n行。例如当n = 4时,x = 77+80+97+26=280。这个我也已经搞定了。
#--------------------------------
我的问题是n=2时的情况。最后1行的t=7,dm=3。那么t-dm=4。这时x应该等于5+45+85+35=170。这个我算出来的数(218)就不对了。
#---------------------------------
最后还有一个条件,就是累计n行不能超过最后一行。例如id=1,n=6时,x = 77+80+97+26+15=295。而不能加上下面的id=2里面的4。
请问这个用R如何实现?
# ---------------------------------------
id <- c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
t <- c(1,2,3,4,5,6,7,1,2,3,4,5,6,7)
dm <- c(4,4,4,4,4,4,4,3,3,3,3,3,3,3)
s <- c(15,66,77,80,97,26,15,4,8,3,5,45,85,35)
df <- data.frame(id,t,dm,s)