10

因子クラスを含むデータがあるため、数値に変換しているときに、この警告メッセージが表示されます。係数を数値に変換するためにRで書いた次のコード

class(usedcars$Price)
[1] "factor"

e <- paste(usedcars$Price)
e <- as.numeric(paste(usedcars$Price))
Warning message:
NAs introduced by coercion 

すべてのデータは「NA」に変換されますが、クラスは数値です。Rで係数を数値に変換しているときに、このNA警告メッセージを取り除くのを手伝ってくれる人はいますか?

4

4 に答える 4

16

as.numericこれは、数値以外の変数で使用した場合に発生します。

私の推測では、数字には「、」が含まれているため(たとえば、1,285)、最初に要因を「クリーン」にしdb <- gsub(",","",db)てから実行しますas.numeric(db)

于 2015-12-03T17:02:41.800 に答える
3

私はあなたの問題を再現しようとします:

set.seed(1)
a <- factor(sample(1:100, 10))
> a
 [1] 27 37 57 89 20 86 97 62 58 6 
Levels: 6 20 27 37 57 58 62 86 89 97

alexwhanのコメントは実際には問題ありません:

> as.numeric(as.character(a))
 [1] 27 37 57 89 20 86 97 62 58  6

データが必要な場合でも、trim()edとにかく機能します:

> paste( " ", a, " ")
 [1] "  27  " "  37  " "  57  " "  89  " "  20  " "  86  " "  97  " "  62  " "  58  " "  6  " 
> as.numeric(paste( " ", a, " "))
 [1] 27 37 57 89 20 86 97 62 58  6

SO唯一の説明は、すべての数字に(予期しない)文字があることです

> as.numeric(paste(a, "a"))
 [1] NA NA NA NA NA NA NA NA NA NA
Warning message:
NAs introduced by coercion 

手紙が見えない場合は、次のことが私に起こりました。

> paste( intToUtf8(160), a, intToUtf8(160))
 [1] "  27  " "  37  " "  57  " "  89  " "  20  " "  86  " "  97  " "  62  " "  58  " "  6  " 
> as.numeric(paste( intToUtf8(160), a, intToUtf8(160)))
 [1] NA NA NA NA NA NA NA NA NA NA

intToUtf8(32) はキーボードからの通常の空白 (いくつかの行の上など) ですが、数字 160 は似ているように見えるもので、別の別のものであり、as.numeric(またtrimからgdata) を認識せず、 を返します NA

于 2013-10-01T13:27:20.567 に答える