R 将NAs替换为大数据帧的以前或以下值

R 将NAs替换为大数据帧的以前或以下值,r,dataframe,na,R,Dataframe,Na,我有一个带有1500个OB的df。还有600多个变量。df中有很多NAs,到目前为止我还没有找到替代它们的解决方案。我希望NAs采用以前的值。如果没有以前的值,则应采用以下值 我已经尝试了一些解决方案,如na.locf等,但不幸没有成功。我有一个解决办法,与平均数。我就是不能用解决我问题的方式重写它 for (i in seq_len(ncol(df))) { df[is.na(df[,i]), i] <- mean(df[,i], na.rm = TRUE) } R“惯用”的方法是

我有一个带有1500个OB的df。还有600多个变量。df中有很多NAs,到目前为止我还没有找到替代它们的解决方案。我希望NAs采用以前的值。如果没有以前的值,则应采用以下值

我已经尝试了一些解决方案,如
na.locf
等,但不幸没有成功。我有一个解决办法,与平均数。我就是不能用解决我问题的方式重写它

for (i in seq_len(ncol(df))) {
  df[is.na(df[,i]), i] <- mean(df[,i], na.rm = TRUE)
}
R“惯用”的方法是使用
lappy
去做你要做的事情:


df[]您还可以使用
tidyr
包中的函数
fill
函数,将参数
.direction
指定为
.direction=“downup”
。要将函数一次应用于所有列,可以将列指定为一个整洁的选择器
everything()
,该选择器从当前选择上下文中选择所有列

因此,在你的情况下,它将是

df <- fill(df, everything(), .direction = "downup")

df na.locf(na.locf(df,na.rm=FALSE),fromLast=TRUE)或
data.table::setnafill
setnafill(setnafill(d,type=“locf”),type=“nocb”)
df <- fill(df, everything(), .direction = "downup")