r - 当列在 NA 结束时插入 NA 值

标签 r interpolation na zoo

我有一列包含带有 NA 的数字数据并且也以 NA 结尾:

df <- data.frame(
  Diam_av = c(12.3, 13, 15.5, NA, NA, NA, NA, 13.7, NA, NA, NA, 9.98, 4,0, 8.76, NA, NA, NA)
)

我想插入缺失值。这适用于 zoo 的函数 na.approx 只要有正的边界值可以从中进行插值但它会失败,就像我的情况一样,边界之一值为 NA(在 Daim_av 列的末尾:

library(zoo)
df %>%
  mutate(Diam_intpl = na.approx(Diam_av))
Error: Problem with `mutate()` input `Diam_intpl`.
x Input `Diam_intpl` can't be recycled to size 18.
ℹ Input `Diam_intpl` is `na.approx(Diam_av)`.
ℹ Input `Diam_intpl` must be size 18 or 1, not 15. 

知道如何排除/中和列最终 NA 值吗?

最佳答案

添加 na.rm=F 以删除错误消息。添加 rule=2 以从最后一个非 NA 值中获取值。

df %>%
  mutate(Diam_intpl = na.approx(Diam_av, na.rm=F),
         Diam_intpl2 = na.approx(Diam_av, na.rm=F, rule=2))

   Diam_av Diam_intpl Diam_intpl2
1    12.30      12.30       12.30
2    13.00      13.00       13.00
3    15.50      15.50       15.50
4       NA      15.14       15.14
5       NA      14.78       14.78
6       NA      14.42       14.42
7       NA      14.06       14.06
8    13.70      13.70       13.70
9       NA      12.77       12.77
10      NA      11.84       11.84
11      NA      10.91       10.91
12    9.98       9.98        9.98
13    4.00       4.00        4.00
14    0.00       0.00        0.00
15    8.76       8.76        8.76
16      NA         NA        8.76
17      NA         NA        8.76
18      NA         NA        8.76

关于r - 当列在 NA 结束时插入 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70155104/

相关文章:

r - 从服务器上的 R session 访问 BigQuery 的授权

r - 计算滚动两个骰子的优雅解决方案?

matlab - 使用matlab通过简单插值增强图像

python - 在缺少第一个和最后一个值的情况下用 Pandas 插入两个方向?

R-merge()在ALL列中返回NA,尽管all.x = T

将 NA 替换为 NA 前后情况的平均值

r - 查找组内超出阈值的点数

mysql - 通用函数 ‘dbListFields’ 、类 “numeric” 的值无效,应为 “character”

python - 求 scipy.interpolate.Rbf 的最小值

performance - 在没有 for 循环的情况下查找并替换每列中的第一个 NA