我有一个data-frame
包含#
作为多列中的缺失值。如何将所有此类#
转换为NA
s?
答案 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
是数据框的名称)。