如何将R数据帧中的特殊值转换为NA?

时间:2014-10-12 05:56:16

标签: r dataframe na

我有一个data-frame包含#作为多列中的缺失值。如何将所有此类#转换为NA s?

3 个答案:

答案 0 :(得分:2)

你可以通过几种方式做到这一点。一种是将na.strings参数设置为"#"

重新读取文件
read.table(file, na.strings = "#")

另一种方法是仅使用

更改数据框df中的值
df[df == "#"] <- NA

答案 1 :(得分:2)

我写了a function makemeNA my "SOfun" package的一部分。

该函数看起来像这样(如果您不想仅为此函数获取包):

makemeNA <- function (mydf, NAStrings, fixed = TRUE) {
  if (!isTRUE(fixed)) {
    mydf[] <- lapply(mydf, function(x) gsub(NAStrings, "", x))
    NAStrings <- ""
  }
  mydf[] <- lapply(mydf, function(x) type.convert(
    as.character(x), na.strings = NAStrings))
  mydf
}

用法是:

makemeNA(df, "#")

获取包裹:

library(devtools)
install_github("mrdwab/SOfun")

答案 2 :(得分:2)

is.na(dat) <- dat == "#"

将会解决问题(其中dat是数据框的名称)。