Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用正向和反向填充的平均值替换dataframe中的空值?_R_Dataframe - Fatal编程技术网

如何用正向和反向填充的平均值替换dataframe中的空值?

如何用正向和反向填充的平均值替换dataframe中的空值?,r,dataframe,R,Dataframe,我刚刚开始使用R,我试图用向前和向后值的平均值替换每列中的空值。下面是具有两个空值的示例数据帧 A B C 1 1 2000 2 NA NA 3 4 5000 4 NA NA 5 7 8000 我正试着做这样的事情 A B C 1 1 2000 2 2.5 3500 3 4 5000

我刚刚开始使用R,我试图用向前和向后值的平均值替换每列中的空值。下面是具有两个空值的示例数据帧

  A      B     C  
  1      1    2000
  2      NA   NA
  3      4    5000
  4      NA   NA
  5      7    8000
我正试着做这样的事情

  A      B      C 
  1      1     2000
  2     2.5    3500
  3      4     5000
  4     5.5    6500
  5      7     8000

tidyr似乎完成了一半的工作
df%>%fill(“A”),direction=c(“down”)
但如何替换向前和向后值的平均值

我们可以使用
na.approx

library(zoo)
df1[-1] <- na.approx(df1[-1])
df1
#  A   B    C
#1 1 1.0 2000
#2 2 2.5 3500
#3 3 4.0 5000
#4 4 5.5 6500
#5 5 7.0 8000

或与
dplyr一起使用

library(dplyr)
df1 %>%
    mutate_if(is.numeric, na.approx)

或使用
数据。表格

library(data.table)
setDT(df1)[, (2:3) := lapply(.SD, na.approx), .SDcols = 2:3]
数据
df1您应该了解在R语言中NA和NULL是不同的。
library(data.table)
setDT(df1)[, (2:3) := lapply(.SD, na.approx), .SDcols = 2:3]
df1 <- structure(list(A = 1:5, B = c(1L, NA, 4L, NA, 7L), C = c(2000L, 
NA, 5000L, NA, 8000L)), class = "data.frame", row.names = c(NA, 
-5L))