【问题标题】:interpolate NA only for the last value仅对最后一个值插入 NA
【发布时间】:2019-12-02 13:36:15
【问题描述】:

在 R 中,在数据框中,我知道我可以使用 na.approx() 用最后一个可用值填充所有 NA 值。

但是,如果我只想针对最后一个可用值而不是针对所有 NA 执行此操作,如本例所示:

a = c(1, 2, 3, 4, NA, NA, NA, 8, 9, 10, NA, NA)

成为:

a = c(1, 2, 3, 4, NA, NA, NA, 8, 9, 10, 10, 10)

我的第一个直觉是首先测试最后一个值是否为 NA,然后测试最后一个非 NA 值。有没有更快的方法?

【问题讨论】:

    标签: r dataframe interpolation na


    【解决方案1】:

    我们可以找到最后一个非NA的索引,然后得到从那个点到'a'的length的序列并分配最后一个非NA的那些

    i1 <- tail(which(!is.na(a)), 1)
    a[i1:length(a)] <- a[i1]
    a
    #[1]  1  2  3  4 NA NA NA  8  9 10 10 10
    

    【讨论】:

      【解决方案2】:

      你可以试试下面的代码

      a[-(1:tail(which(!is.na(a)),1))] <- tail(a[!is.na(a)],1)
      

      这样

      > a
       [1]  1  2  3  4 NA NA NA  8  9 10 10 10
      

      【讨论】:

        猜你喜欢
        • 2022-01-03
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 2020-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多