有时我们想找到条件累积和,如果出现特定值,这些条件可以重置累积。例如,找到一个可变帧的累积和,但是如果出现1,则重新开始求和。在R中,我们可以在with,ave和cumusum函数的帮助下执行此操作,如以下示例所示。
请看以下数据帧:
> ID<-1:20 > Ratings<-sample(0:2,20,replace=TRUE) > df1<-data.frame(ID,Ratings) > df1
输出结果
ID Ratings 1 1 0 2 2 2 3 3 0 4 4 0 5 5 0 6 6 2 7 7 1 8 8 0 9 9 1 10 10 2 11 11 2 12 12 1 13 13 1 14 14 0 15 15 0 16 16 2 17 17 0 18 18 0 19 19 1 20 20 0
查找累积和,如果出现1,则重新启动:
> df1<-with(df1,ave(Ratings,cumsum(Ratings==1),FUN=cumsum)) > df1
输出结果
[1] 0 2 2 2 2 4 1 1 1 3 5 1 1 1 1 3 3 3 1 1
> x<-1:20 > y<-sample(1:4,20,replace=TRUE) > df2<-data.frame(x,y) > df2
输出结果
x y 1 1 2 2 2 2 3 3 1 4 4 1 5 5 3 6 6 2 7 7 2 8 8 3 9 9 1 10 10 4 11 11 2 12 12 1 13 13 1 14 14 3 15 15 2 16 16 2 17 17 1 18 18 4 19 19 4 20 20 4
查找累积和,如果出现1,则重新启动:
> df2<-with(df2,ave(y,cumsum(y==1),FUN=cumsum)) > df2
输出结果
[1] 2 4 1 1 4 6 8 11 1 5 7 1 1 4 6 8 1 5 9 13