R 用序列替换值之间的NAs

R 用序列替换值之间的NAs,r,dataframe,na,missing-data,R,Dataframe,Na,Missing Data,我有一个带有NA值的数据框。我想用NAs前后的值之间的序列替换这些NAs 考虑以下示例: # Example data df <- data.frame(x1 = c(5, NA, NA, 10, NA), x2 = c(NA, 2, NA, - 10, NA), x3 = c(10, NA, 15, NA, 20)) df # x1 x2 x3 # 5 NA 10 # NA 2 NA # NA NA 15 #

我有一个带有NA值的数据框。我想用NAs前后的值之间的序列替换这些NAs

考虑以下示例:

# Example data
df <- data.frame(x1 = c(5, NA, NA, 10, NA),
                 x2 = c(NA, 2, NA, - 10, NA),
                 x3 = c(10, NA, 15, NA, 20))
df
# x1  x2 x3
#  5  NA 10
# NA   2 NA
# NA  NA 15
# 10 -10 NA
# NA  NA 20

如何以自动化的方式在两个值之间替换NAs?

zoo中的na.appro函数可以非常轻松地执行此插值

dfx1x2x3
#>1 5 NA 10
#>2 NA 2 NA
#>3 NA NA 15
#>4 10-10 NA
#>5 NA NA 20
动物园:大约不到(df)
#>x1x2x3
#>[1,]5.000000 NA 10.0
#> [2,]  6.666667   2 12.5
#> [3,]  8.333333  -4 15.0
#> [4,] 10.000000 -10 17.5
#>[5,]NA-NA 20.0

由(v0.2.0)于2019-02-10创建。

动物园中的na.approx函数非常容易进行插值

dfx1x2x3
#>1 5 NA 10
#>2 NA 2 NA
#>3 NA NA 15
#>4 10-10 NA
#>5 NA NA 20
动物园:大约不到(df)
#>x1x2x3
#>[1,]5.000000 NA 10.0
#> [2,]  6.666667   2 12.5
#> [3,]  8.333333  -4 15.0
#> [4,] 10.000000 -10 17.5
#>[5,]NA-NA 20.0
由(v0.2.0)于2019年2月10日创建。

以下是带有imputeTS包的解决方案:

#示例数据
df这是一个带有imputeTS包的解决方案:

#示例数据

df感谢您提供的替代解决方案!感谢您的替代解决方案!
# Expected output

#       x1   x2     x3
#        5   NA     10
# 6.666667    2   12.5
# 8.333333   -4     15
#       10  -10   17.5
#       NA   NA     20
# Example data
df <- data.frame(x1 = c(5, NA, NA, 10, NA),
             x2 = c(NA, 2, NA, - 10, NA),
             x3 = c(10, NA, 15, NA, 20))

library("imputeTS")
na.interpolation(df, option = "linear)