用R中的NA替换空白



尝试了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

最新更新