r - 用一种平均值替换多个 NA
问题描述
我有以下类型的向量:
x <- c(2,5,1,5,NA,NA,NA,9,23,1,NA,NA,NA,5,2)
有没有办法用 NA 之前和之后的值的平均值替换我的 NA?就像对它们进行插值一样,但只有一个值!
*更新:在这种情况下的预期输出将是c(2,5,1,5,7,7,7,9,23,1,3,3,3,5,2)
非常感谢。
解决方案
我们可以na.approx
使用zoo
library(zoo)
na.approx(x, method = "constant", f = .5)
# [1] 2 5 1 5 7 7 7 9 23 1 3 3 3 5 2
关于论点f
,来自?approxfun
for method = "constant" 介于 0 和 1 之间的数字(包括 0 和 1),表示左右连续阶跃函数之间的折衷。如果 y0 和 y1 是点左侧和右侧的值,则如果 f == 0,则值为 y0,如果 f == 1,则值为 y1,中间值为 y0*(1-f)+y1*f。这样,结果对于 f == 0 是右连续的,对于 f == 1 是左连续的,即使对于非有限 y 值也是如此
推荐阅读
- django - 如何在 django 中请求 api 时包含参数?
- ios - iOS - 阻止其他公司开发人员在他们的应用程序中以 WKWebview 或 UIWebview 加载我的网站?
- javascript - 仅在单击特定父级时删除内部元素的实例
- python - 如何将我的列表转换为数组数组?
- excel - 找不到 Excel 源数据
- excel - VBA过滤唯一值并将其复制到新工作表
- python-3.x - 不同python模块的函数中不识别锁
- keycloak - Keycloak 用户选择 OTP 或 SMS
- javascript - 在 JSGrid 中更改日期格式
- perl - 从严格的编译指示中免除一段 perl 代码