2011-09-30 4 views
27

可能性の重複:
R - How to convert a factor to an integer\numeric in R without a loss of information情報R失うことなく、数値に倍率を変換(as.numericする()動作するようには思えない)

などについては、次の事実。 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,1の因子を変換すると0、および15をas.numeric()を使用して量的変数に変換すると、すべての数値が順位に変換され、元の値は失われます。

レベル10,15,4、および8のベクトル 'blah.new'をどのようにして10,15,4、および8の数値に変換するのですか?

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

はありがとう!!!!

は*****アップデート:私はそれは、この関数は、引数に変換していること言うん()as.numericのドキュメントにどこ疑問に思って、しかし******

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

をそれを考え出しましたランキングのリスト?

+1

これは、「?factor」 – Andrie

+1

の**警告**セクションに記載されています。また、R-FAQにも記載されています。 –

+1

しかし、それは私が見ているR本のいずれにもなく、確かに私をループのために投げ込んでしまった。 – Amanda

答えて

26

最初に、因子はインデックスとレベルで構成されます。この事実は、あなたが要因に苦しんでいるとき、非常に重要です。例えば

、ここで

> 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は、単にのインデックスの部分を数値に変換します。
as.characterは、インデックスとレベルを処理し、レベルで表される文字ベクトルを生成します。

?as.numericには、と表示されています。要因はデフォルトの方法で処理されます。

関連する問題