【发布时间】:2021-01-10 01:09:34
【问题描述】:
我有一个要修改的向量,使其仅包含等于或大于前一个元素的元素。该向量表示应该只增加或保持不变的现象(即按天累积的死亡人数),但报告错误会导致元素小于前一个元素。我想通过用以前的元素替换元素来纠正这个问题,直到向量满足上述标准。
原始数据:1 3 3 6 8 10 7 9 15 12
想要修改的数据:1 3 3 6 6 6 7 9 9 12
library(zoo)
raw <- c(1, 3, 3, 6, 8, 10, 7, 9, 15, 12)
replace.errors <- function(x){
x %>%
replace(diff(x) < 0, NA) %>%
na.locf(na.rm=FALSE)
}
replace.errors(raw)
# [1] 1 3 3 6 8 8 7 9 9 12
如果需要替换一行中的多个连续元素(8 和 10),我的函数将不起作用,因为它只是向前拉一个仍然大于下一个的元素。
【问题讨论】: