30

重複の可能性:
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

レベル4、8、10、および15の因子をas.numeric()を使用して量的変数に変換すると、すべての数値がランキングに変換され、元の値が失われます。

レベル10、15、4、および8のベクトル「blah.new」を取得して、数値10、15、4、および8に変換するにはどうすればよいですか?

(この問題は、量的変数がread.table()によって因子として読み取られるデータセットが原因で発生しました)

ありがとうございました!!!!

*****更新:考え出した******

blah.new1<-as.numeric(as.character(blah.new))

しかし、as.numeric()のドキュメントのどこで、この関数が引数をランキングのリストに変換すると言っているのでしょうか。

4

1 に答える 1

29

まず、ファクターはインデックスとレベルで構成されます。あなたが要因に苦しんでいるとき、この事実は非常に重要です。

例えば、

> 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つの要素があります。インデックス
この順序になっています。レベルは 各インデックスに関連付けられています:1-> b、2-> c、3->d。2, 1, 2, 3

次に、因子のインデックス部分をas.numeric単純に数値に変換します。インデックスとレベルを処理し、そのレベルで表される文字ベクトルを生成します。
as.character

?as.numericFactorsはデフォルトの方法で処理されると言います。

于 2011-09-30T14:55:55.230 に答える