可能性のある複製:
R-情報を失わずに因子をRの整数\数値に変換する方法
As.numeric()関数に関する次の事実が私の注意を引きました
> blah<-c("4","8","10","15")
> blah
[1] "4" "8" "10" "15"
> blah.new<-as.factor(blah)
> blah.new
[1] 4 8 10 15
Levels: 10 15 4 8
> blah.new1<-as.numeric(blah.new)
> blah.new1
[1] 3 4 1 2
As.numeric()を使用して、レベル4、8、10、および15の因子を量的変数に変換すると、すべての数値がランキングに変換され、元の値が失われます。
レベル10、15、4、8のベクター「blah.new」を取得して、数値10、15、4、8に変換するにはどうすればよいですか?
(この問題は、量的変数がread.table()によって読み取られて要因になるデータセットのために発生しました)
ありがとうございました!!!!
*****更新:それを考え出した******
blah.new1<-as.numeric(as.character(blah.new))
しかし、as.numeric()のドキュメントのどこで、この関数が引数をランキングのリストに変換すると言っているのでしょうか?
まず、因子はインデックスとレベルで構成されます。この事実は、ファクターに苦労している場合に非常に重要です。
例えば、
> z <- factor(letters[c(3, 2, 3, 4)])
# human-friendly display, but internal structure is invisible
> z
[1] c b c d
Levels: b c d
# internal structure of factor
> unclass(z)
[1] 2 1 2 3
attr(,"levels")
[1] "b" "c" "d"
ここでは、z
には4つの要素があります。
インデックスは2, 1, 2, 3
この順序で。
レベルは、それぞれに関連付けられていますインデックス:1-> b、2-> c、3-> d。
次に、as.numeric
は、単にファクタのindex部分を数値に変換します。as.character
はインデックスとレベルを処理し、レベルで表される文字ベクトルを生成します。
?as.numeric
は、要素はデフォルトのメソッドによって処理されると言います。