0

文字列「NULL」のフィールドを持つSQLからの入力データがあります。

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'ください。これは、文字列の代わりに数値の s オブジェクトを使用して、 ではなくfile$xとしてインポートします。次に、s をs に置き換えます。numericfactorNANULLNA0

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

この問題はソース (つまり SQL) で修正する必要がありますが、これを行う 1 つの方法があります。

因数を文字に変換し、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 に答える
0

Rで:

file$x[file$x=="NULL"] <- 0
于 2013-01-21T08:22:22.520 に答える