1

我是一个相当新手的 R 用户,但一直在尝试做一些简单的缺失值替换。(将 an 替换为NA之前和之后的值的平均值NA

我一直在使用库中的na_ma()函数imputeTS,它正在做我需要做的事情。

na_ma(x , k=1, weighting = "simple") 

我已将其应用于列,然后是数据框,一切正常。我现在希望将其应用于数据框列表,但它似乎不起作用。

如果有人能指出我在这个问题上的最佳选择是什么,我将不胜感激。

4

1 回答 1

0

使用 lapply 或循环应该非常简单。

这是一个可重现的示例 - lapply:

library("imputeTS")

a <- data.frame(x1 <- c(2,NA,NA,2,4,6,6), x2 <- c(2,NA,7,2,NA,6,6))
b <- data.frame(x1 <- c(2,NA,33,2,4,61,6), x2 <- c(22,NA,71,2,NA,36,6))

# this is your list with data.frames that contain columns with NAs
l <- list(a,b)

# Don't forget to assign the result of lapply back to your list l
l <-lapply(l, function(x) na_ma(x , k=1, weighting = "simple"))
l

这是一个带有列表的示例:

library("imputeTS")

# Create Example data
a <- data.frame(x1 <- c(2,NA,NA,2,4,6,6), x2 <- c(2,NA,7,2,NA,6,6))
b <- data.frame(x1 <- c(2,NA,33,2,4,61,6), x2 <- c(22,NA,71,2,NA,36,6))
l <- list(a,b)


for (i in length(l)) 
{
  l[[i]] <- na_ma(l[[i]] , k=1, weighting = "simple")
}
l 

for 循环版本可能具有优势,即警告或错误更易于追踪。但无论如何,我猜这两个版本都应该工作。

于 2021-11-09T21:36:07.223 回答