用R中的NA替换空白

时间:2018-12-06 13:13:58

标签: r data.table

尝试了SO中给出的大多数解决方案。以下是我尝试过的尝试

async index(req, res) {
    try {
        const { AdminId } = req.body
        const userData = await User.findAll({
            where: { AdminId: AdminId },
            include: [UserStatus,
                { model: SurveyResult, include: [Survey] }]

        })
            .map(user => user.toJSON())
    }
}

但是整个数据表在所有单元格中都转换为NA。我想将所有列中的所有blank(“”)都更改为NA。

它是 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))] 。不是data.table

也不会从csv文件中读取数据-我可以在其中提及data.frame

更多输入。 数据从配置单元查询中读取到data.table中。当我发出view命令时,很少有单元格显示为空,而很少有单元格显示为na strings

NA

要将这些空格转换为NA(在实际数据中,我有100多个cols),我尝试了这些命令。同样,当我拿Col1 Col2 Col3 1 NA 2 NA NA 10 ABC 时,我也得到“”和2。

2 个答案:

答案 0 :(得分:3)

要进行替换,您可以尝试进行以下操作:

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

答案 1 :(得分:1)

我们在谈论什么类型的变量?数字?字符? 公式化的问题更好,更容易给出更好的答案。

这可能会帮助:

DT[DT == ""] <- NA

不要那么努力。 R应该很有趣!