如何将NULL的文本字符串转换为数字?

时间:2013-01-21 08:14:00

标签: string r numeric

我从SQL输入数据,其字段为字符串“NULL”,例如

unique(file$x) 

返回

Levels: 1 10 14 8 NULL

我希望“NULL”的任何结果变为“0”,然后使用as.numeric()进行转换。

我试过了:

i <- 1
for(i <= nrow(file) {
    if(file$x[i] == "NULL") {
        file$x[i] <- 0
    }
i <- i + 1
}

但是,我现在得到的结果是NULL已经变成了,我仍然无法将其转换为数字0.

4 个答案:

答案 0 :(得分:4)

如果您使用read.csv阅读此内容,请设置选项na.strings='NULL'。这会将file$x导入numeric,而不是factor,使用数字NA对象代替NULL字符串。然后用NA s替换0

file$x[is.na(file$x)] <- 0

答案 1 :(得分:2)

在SQL查询中添加:ISNULL(myNullableField, 0)

这确保 - 如果您的值为NULL - 它将转换为0

这是我认为的选择查询吗?

答案 2 :(得分:0)

在R:

file$x[file$x=="NULL"] <- 0

答案 3 :(得分:0)

虽然你应该在源代码(即SQL)修复这个问题,但这是一种方法。

将因子转换为字符,然后将NA替换为0

我不确定这是否是为非常大的数据做的正确方法。

> x <- as.factor(c('1', '10', '14', '8', 'NULL'))
> y <- as.numeric(as.character(x))
Warning message:
NAs introduced by coercion 
> y[is.na(y)] <- 0
> y
[1]  1 10 14  8  0