Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 保留向量的最大值,直到向量赶上_R_Time Series - Fatal编程技术网

R 保留向量的最大值,直到向量赶上

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

我有一些累积计数数据。由于报告不准确,有时累积总和会减少,例如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]),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