我有一个矢量
a <- c(4,2,7,6,8,9,3,1,12,13)
我想用NA替换所有小于之前的元素,结果我的例子应该是:
[1] 4 NA 7 NA 8 9 NA NA 12 13
我想过使用for-loop但是无法提出解决方案.还有其他选择吗?
(我的下一步是使用na.approx()通过线性插值替换NA'y)
感谢您提示使用diff().但是,我认识到我上面的例子没有涵盖我的数据集中的所有情况,所以这是一个更好的例子:对于向量
b <- c(4,2,7,6,8,9,3,1,5,7,12,13)
我想得到
[1] 4 NA 7 NA 8 9 NA NA NA NA 12 13
而
b[diff(c(b[1], b)) < 0] <- NA
给我
[1] 4 NA 7 NA 8 9 NA NA 5 7 12 13
A5C1D2H2I1M1.. 6
您可以使用diff
常规提取/子集:
a[diff(c(a[1], a)) < 0] <- NA a # [1] 4 NA 7 NA 8 9 NA NA 12 13
(这里,我假设< 0
你正在寻找的东西,因为它与你的输出相匹配,即使它与你的描述不完全匹配,它只是提到"少于前一个".)
您可以使用diff
常规提取/子集:
a[diff(c(a[1], a)) < 0] <- NA a # [1] 4 NA 7 NA 8 9 NA NA 12 13
(这里,我假设< 0
你正在寻找的东西,因为它与你的输出相匹配,即使它与你的描述不完全匹配,它只是提到"少于前一个".)