尝试了SO中给出的大部分解决方案。以下是我尝试的尝试
DT[, names(DT) := lapply(.SD, function(x) gsub("", NA, x))]
DT <-data.table(lapply(DT, function(x){ x[x == ""] <- NA}))
DT[, names(DT) := lapply(.SD, function(x) replace(x, x =="",NA))]
DT[, names(DT) := lapply(.SD, function(x) gsub("", NA, x))]
但在所有单元格中,整个数据表都转换为NA。我想将所有列中的所有空白("(更改为NA。
它是data.table
。非data.frame
此外,数据也不是从csv文件中读取的,我可以在其中提到na strings
更多的投入。数据从配置单元查询读取到data.table中。当我发出view命令时,很少有单元格显示为空,很少有单元显示为NA
Col1 Col2 Col3
1 NA
2 NA NA
10 ABC
为了将这些空格转换为NA(在实际数据中,我有100多个cols(,我尝试了这些命令。当我取unique(DT$Col1)
时,我得到"和2。
我们谈论的是什么类型的变量?数字?性格一个更有条理的问题更容易给出更好的答案。
这可能会有所帮助:
DT[DT == ""] <- NA
不要那么努力。R应该很有趣!
要替换到位,您可以按照您的尝试执行以下操作:
DT[, names(DT) := lapply(.SD, function(x) replace(x, x=="", NA))]
示例:
DT <- data.table(v1=c("a", "", "b", "c"), v2=c("b", "n", "i", ""), v3=c("", "", "r", "t"))
# v1 v2 v3
#1: a b
#2: n
#3: b i r
#4: c t
DT[, names(DT) := lapply(.SD, function(x) replace(x, x=="", NA))]
DT
# v1 v2 v3
#1: a b <NA>
#2: <NA> n <NA>
#3: b i r
#4: c <NA> t