首页 > 解决方案 > 仅对最后一个值插入 NA

问题描述

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

但是,如果我只想针对最后一个可用值而不是针对所有 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 值。有没有更快的方法?

标签: rdataframeinterpolationna

解决方案


我们可以找到最后一个非 NA 的索引,然后获取从该点到length'a' 的序列并分配具有最后一个非 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

推荐阅读