我有一些与我合作的学年的数据。变量是SchoolYear,Aug,Sep,Oct,...,May,June,其中每个月对应于该月的参与者数量。我需要总结几个月,直到缺少信息,在这种情况下由0确定。我已经尝试了
yeardf <-within(yeardf,{
Max_enroll<-cummax(Sep)
Enroll_To_Date<-cumsum(Sep)
}
)
1973-74,0,0,4,2,14,26,22,8,0,99,
1974-75,0,0,4,26,10,23,10,14,0,91,
虽然在Enroll_To_Date行上设置了Sep> 0的条件但是还没有成功。
答案 0 :(得分:0)
将数据设置为列表和数据框:
> row1 <- c("1973-74",0,0,4,2,14,26,22,8,0,99)
> row2 <- c("1974-75",0,0,4,26,10,23,10,14,0,91)
> df <- rbind(row1,row2)
可以像这样找到row1
的累积总和,看起来你想捕获76(它达到零点):
> (z <- cumsum(row1[2:length(row1)]))
[1] 0 0 4 6 20 46 68 76 76 175
这是获得它的一种方法。首先在列表中找到具有值的位置:
> which(duplicated(lead(cumsum(row1[2:length(row1)]))))
[1] 8
然后在该值处查找累积总和:
> z[which(duplicated(lead(cumsum(row1[2:length(row1)]))))]
[1] 76
所以这是你row2
的计算:
> z <- cumsum(row2[2:length(row2)])
> z[which(duplicated(lead(cumsum(row2[2:length(row2)]))))]
[1] 87
如果您想要执行大量操作,例如在数据框df
中,请在函数中将它们链接在一起,并在所有行(apply
)上使用1
你的数据框:
> apply(df,1,function(x) cumsum(x[2:length(x)])[which(duplicated(lead(cumsum(x[2:length(x)]))))])
row1 row2
76 87