0

我有来自 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

4 回答 4

4

如果您正在阅读本文,请read.csv设置选项na.strings='NULL'。这将导入file$xnumeric,而不是factor,用数字NAs 对象代替NULL字符串。然后用s替换NAs 0

file$x[is.na(file$x)] <- 0
于 2013-01-21T08:47:04.580 回答
2

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

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

我认为这是一个选择查询?

于 2013-01-21T08:15:52.807 回答
0

在 R 中:

file$x[file$x=="NULL"] <- 0
于 2013-01-21T08:22:22.520 回答
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
于 2013-01-21T08:43:05.510 回答