r - 仅对最后一个值插入 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 值。有没有更快的方法?
解决方案
我们可以找到最后一个非 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
推荐阅读
- javascript - Angular 动态表单未按预期更新
- java - 如何使 EditText 不为空?
- typescript - Notepad++ 中的打字稿支持
- amazon-web-services - 设置 CDC 应用程序时,Lambda 是正确的选择吗
- ios - SwiftUI 项目被 AppStore 拒绝,原因是不断出现空白屏幕
- python - 如何在自定义 Keras 模型函数中共享层权重
- bots - 不和谐机器人问候消息
- excel - Excel 中是否有与嵌套 IF(ISNUMBER(SEARCH) 函数相同的可扩展函数?
- flutter - 当一个区域在 10 秒内被触摸 5 次时,如何在 Dart/Flutter 中编码以启用我的调试模式
- django - 将 Django 响应的返回类型设置为对象列表