【问题标题】:how to replace several NA values in columns of a data frame with the mean of the values of the columns [duplicate]如何用列值的平均值替换数据框列中的几个NA值[重复]
【发布时间】:2020-11-07 20:08:42
【问题描述】:

我有一个来自心理学清单答案的 df。我想用列值的平均值更改一些 NA 值。我试过两种方法
第一个是创建一个稍后与 sapply 一起使用的函数:

nar <- function(x) {x[is.na(x)] <<- round(mean(x, na.rm = TRUE))}

但是当我证明这个功能时,它不起作用。但是,此代码实际上适用于单列:

x[is.na(x)] <<- round(mean(x, na.rm = TRUE)

所以我发现我也可以做一个 ifelse,它也适用于一列,但我不知道如何将它应用到所有列(我尝试了 sapply 和应用,但它不起作用)。但是我不知道在 ifelse 函数中将什么作为 NO 参数。我只是想让它什么都不做,但我不知道该怎么做。

ifelse(is.na(dfv[,col]) == TRUE, dfv[,col][is.na(dfv[,col])] <- round(mean(dfv[,col], na.rm = TRUE)), help)

所以可能会有疑问:如何将 NA 值自动替换为 NA 值在整个数据框中的列值的平均值?

我会很感激任何帮助

【问题讨论】:

    标签: r dataframe replace mean na


    【解决方案1】:

    不要使用&lt;&lt;-。很少(从不)有用。尝试以这种方式使用它:

    nar <- function(x) {x[is.na(x)] <- round(mean(x, na.rm = TRUE));x}
    dfv[,col] <- sapply(dfv[,col], nar)
    

    【讨论】:

    • 成功了。非常感谢你!你能解释一下为什么 x 在 ; 之后出现吗? ?如果你当然可以
    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 2017-11-08
    • 2016-11-16
    • 1970-01-01
    • 2019-11-21
    • 2016-10-03
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多