【问题标题】:R zoo package: na.approx changing length of vector when NA are in the beginningR zoo 包:当 NA 在开始时,na.approx 改变向量的长度
【发布时间】:2019-02-23 02:13:47
【问题描述】:

zoo 包具有函数 na.approx(或 na.spline),可将数据中的 NA 替换为 approx 或 spline。

一个潜在的论点是maxgap,它给出了最大的空白。这很好用,除了如果 NA 在向量的开头,函数会改变向量的长度。

例如:

require(zoo)
x <- 1:20 + rnorm(20)
x1 <- x
x1[5] <- x1[6] <- NaN
length(na.approx(x1, maxgap = 1)) == length(x) # TRUE
x2 <- x
x2[1] <- x2[2] <- NaN
length(na.approx(x2, maxgap = 1)) == length(x) # FALSE

当将此函数与数据框一起使用时,这是有问题的。例如:

require(dplyr)
df1 <- tibble(A = 1:20, B = x1)
df1 %>% 
  mutate(B_fill = na.approx(B, maxgap = 1))

df2 <- tibble(A = 1:20, B = x2)
df2 %>% 
  mutate(B_fill = na.approx(B, maxgap = 1))
# Error: Column `B_fill` must be length 20 (the number of rows) or one, not 18

【问题讨论】:

    标签: r zoo


    【解决方案1】:

    当我问这个问题时,我找到了答案,只需更改 na.rm 参数即可。

    df2 %>% 
      mutate(B_fill = na.approx(B, maxgap = 1, na.rm = FALSE))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 2013-08-23
      • 1970-01-01
      • 2011-12-29
      • 2017-01-08
      • 1970-01-01
      • 2020-01-30
      • 2015-08-15
      相关资源
      最近更新 更多