【问题标题】:Replacing NA values in R [duplicate]替换R中的NA值[重复]
【发布时间】:2019-10-11 13:30:55
【问题描述】:

我的数据框包括:

>car_df

Grade         Speed      Age
  7             54       13
  10            NA       4
  NA            43       23
  3             NA       NA
  1             87       12
  NA            NA       NA

每个列的平均值示例,忽略 NA 是:

 > mean_col

 Grade      Speed      Age
  3.6       30.67      8.67

我正在尝试将 Grade and Speed 列中的 NA 值替换为 mean_col 的平均值。

所以新的数据框看起来像:

Grade         Speed      Age
  7             54       13
  10            30.67    4
  3.6           43       23
  3             30.67    NA
  1             87       12
  3.6           30.67    NA

我试过了:

car_df$Grade <- replace(is.na, mean_col$Grade)

car_df$Speed <- replace(is.na, mean_col$Speed)

但这行不通。希望能得到一些帮助。

【问题讨论】:

  • ...is.na(.), mean_col$Grade....试试这个
  • 如果评论不清楚,is.na(car_df$Grade) &lt;- mean_col$Gradereplace 语法必须是 car_df$x &lt;- replace(car_df$x, is.na(car_df$x), mean_col$x)。填写x 的每一列。
  • 这是针对行的,但你当然可以在这里调整一些选项:stackoverflow.com/q/6918086/210673

标签: r


【解决方案1】:

使用tidyr's replace_na,您可以:

car_df=data.frame(Grade=c(7,10,NA,3,1,NA),Speed=c(54,NA,43,NA,87,NA),Age=c(13,4,23,NA,12,NA))
library(tidyr)
replace_na(car_df,as.list(colMeans(car_df,na.rm=T)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多