R 保留向量的最大值,直到向量赶上
我有一些累积计数数据。由于报告不准确,有时累积总和会减少,例如0 1 2 3 2 4 5 我想创建一个新的向量,它保留报告的最大值,并将其向前推进,直到累积计数数据赶上。所以上面的修正版本应该是01 2 3 3 4 5 我尝试了以下方法R 保留向量的最大值,直到向量赶上,r,time-series,R,Time Series,我有一些累积计数数据。由于报告不准确,有时累积总和会减少,例如0 1 2 3 2 4 5 我想创建一个新的向量,它保留报告的最大值,并将其向前推进,直到累积计数数据赶上。所以上面的修正版本应该是01 2 3 3 4 5 我尝试了以下方法 mydf <- data.frame(ts1 = c(0,1,1,1,2,3,2,2,3,4,4,5)) mydf$lag1 <- lag(mydf[,1]) mydf$corrected <- ifelse(is.na(mydf[,2]),m
mydf <- data.frame(ts1 = c(0,1,1,1,2,3,2,2,3,4,4,5))
mydf$lag1 <- lag(mydf[,1])
mydf$corrected <- ifelse(is.na(mydf[,2]),mydf[,1],
ifelse(mydf[,2] > mydf[,1], mydf[,2], mydf[,1]))
这适用于第一次下一个值小于前一个值Line7的情况,但在第二个时间线8中失败
我想一定有更好的办法。等于输入向量的新向量,除非值减小,在这种情况下,它保留先前的值,直到输入向量超过保留的值。您正在查找cummax:
非常感谢。我知道这个逻辑必须被转化成一个函数。
ts1 lag1 corrected
1 0 NA 0
2 1 0 1
3 1 1 1
4 1 1 1
5 2 1 2
6 3 2 3
7 2 3 3
8 2 2 2
9 3 2 3
10 4 3 4
11 4 4 4
12 5 4 5
cummax(mydf$ts1)
#[1] 0 1 1 1 2 3 3 3 3 4 4 5