我从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.
答案 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