【问题标题】:Replace NAs and empty string from dataframe in R从 R 中的数据框中替换 NA 和空字符串
【发布时间】:2015-05-30 14:14:11
【问题描述】:

我有一个包含数字和名义数据的数据集。数值列有 NA,我想用中位数替换那些 NA。对于名义数据,我只有空字符串“”,我希望将它们替换为最常出现的值。到目前为止,我得到了这个:

replaceNA <- function(x) {
  if (is.numeric(x)) {
    colMedian <- median(x, na.rm = TRUE)
  } else {
    colMax <- names(which.max(table(x)))
  }
}

如何检查每一列并替换 NA 和“”?

【问题讨论】:

    标签: r


    【解决方案1】:

    试试

    replaceNA <- function(x) {
                 v1 <- if(is.numeric(x))
                         median(x, na.rm=TRUE)
                     else names(which.max(table(x[x!=''])))
                   replace(x, which(x %in% c(NA, '')), v1)
                  }
    
    df1[] <- lapply(df1, replaceNA)
    

    或者

    library(dplyr)
    df1 %>% 
          mutate_each(funs(replaceNA(.)))
    

    数据

    set.seed(24)
    df1 <- data.frame(Col1= sample(c(LETTERS[1:3], ''), 10, replace=TRUE), 
           Col2=sample(c(1:5, NA), 10, replace=TRUE),
          Col3= sample(c(4:6, NA), 10, replace=TRUE), stringsAsFactors=FALSE)
    

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多