我是一个相当新手的 R 用户,但一直在尝试做一些简单的缺失值替换。(将 an 替换为NA
之前和之后的值的平均值NA
)
我一直在使用库中的na_ma()
函数imputeTS
,它正在做我需要做的事情。
na_ma(x , k=1, weighting = "simple")
我已将其应用于列,然后是数据框,一切正常。我现在希望将其应用于数据框列表,但它似乎不起作用。
如果有人能指出我在这个问题上的最佳选择是什么,我将不胜感激。
我是一个相当新手的 R 用户,但一直在尝试做一些简单的缺失值替换。(将 an 替换为NA
之前和之后的值的平均值NA
)
我一直在使用库中的na_ma()
函数imputeTS
,它正在做我需要做的事情。
na_ma(x , k=1, weighting = "simple")
我已将其应用于列,然后是数据框,一切正常。我现在希望将其应用于数据框列表,但它似乎不起作用。
如果有人能指出我在这个问题上的最佳选择是什么,我将不胜感激。
使用 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 循环版本可能具有优势,即警告或错误更易于追踪。但无论如何,我猜这两个版本都应该工作。