R zoo包:当NA在开头时,na.approx改变向量的长度

问题描述 投票:0回答:1

zoo包具有na.approx(或na.spline)函数,该函数用约或样条替换数据中的NA。

一个潜在的论点是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个回答
2
投票

当我问这个问题时,我找到了答案,只是改变了na.rm的论点。

df2 %>% 
  mutate(B_fill = na.approx(B, maxgap = 1, na.rm = FALSE))
© www.soinside.com 2019 - 2024. All rights reserved.