r - 用特定的平均值替换 NA 值
问题描述
我有一个带有列和行的data.frame。我如何替换 NA 值,使其成为该列中该单元格之前和之后的第一个值的平均值?
例如:
1. 1 2 3
2. 4 NA 7
3. 9 NA 8
4. 1 5 6
我需要第一个NA
成为——(5+2)/2=3.5
第二个成为be (3.5+5)/2=4.25
解决方案
让我们创建一些示例数据并将其转换为data.table
:
require(data.table)
require(zoo)
dat <- data.frame(a = c(1, 2, NA, 4))
setDT(dat)
现在,使用该zoo::na.approx
函数我们可以估算缺失值。
dat[, newA:= na.approx(a, rule = 2)]
输出:
a newA
1: 1 1
2: 2 2
3: NA 3
4: 4 4
推荐阅读
- python-3.x - 我想将来自多个文本框的值加起来并插入到最终的文本框中
- terminal - 在命令行提示符的上下文中,“nord”是什么意思?
- laravel - Laravel 6 保留两个服务器和子域之间的会话
- java - 使用 relativelayout 共享 TextView 内容
- c# - 在 C# 中有效地在海量文件中搜索字符串
- matlab - 从音频文件 Matlab 中去除噪声
- python - 如何计算姿势图优化器(slam)?
- c++ - 有没有办法合并两个(或多个)for循环以降低整体时间复杂度?
- kubernetes - PodDisruptionBudgets 是否优先于 HorizontalPodAutoscaler?
- python-3.x - 为什么我的列表在使用 for 循环追加后不断变化?