替换比以前小的向量元素(使用NA)

 青竹风163_955 发布于 2023-02-13 18:49

我有一个矢量

    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你正在寻找的东西,因为它与你的输出相匹配,即使它与你的描述不完全匹配,它只是提到"少于前一个".)

1 个回答
  • 您可以使用diff常规提取/子集:

    a[diff(c(a[1], a)) < 0] <- NA
    a
    #  [1]  4 NA  7 NA  8  9 NA NA 12 13
    

    (这里,我假设< 0你正在寻找的东西,因为它与你的输出相匹配,即使它与你的描述不完全匹配,它只是提到"少于前一个".)

    2023-02-13 18:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有