2011-01-25 7 views
54

私は、reshapeパッケージを使用してデータフレームを操作しています。溶融関数を使用するとき、私の値の列を因数分解します。これは、それらの値のサブセットが操作を実行できるようにする整数なので問題です。因数を整数に変換する

因子を整数に強制する方法を知っている人はいますか? as.character()を使用すると正しい文字に変換されますが、ただちに操作を実行することはできません。as.integer()またはas.numeric()は、システムがその係数を格納している番号に変換します。

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

ジェフ

+2

これはhttp://stackoverflow.com/questions/3418128/r-how-to-convert-a-factor-to-an-integer-numeric-in-r-without-a-loss-ofに似ています。 -informat – Aaron

答えて

53

次の2つの機能を組み合わせることができます。数値にそこから文字に強制:

> fac <- factor(c("1","2","1","2")) 
> as.numeric(as.character(fac)) 
[1] 1 2 1 2 
+0

これを試しましたが、警告メッセージが表示されます。「NAsは強制で導入されました」これは何を意味するのでしょうか? –

+0

これはちょうどそれらのいくつかが始まる番号ではなかったことを意味しますか? –

+1

@Jeffこれは、文字の一部が数字でないことを意味します。つまり、 'as.numeric(....) 'を使用すると、それらは' NA'に変換されます。あなたの因子変数に 'fac'を置き換えて、' NA'に強制されているかどうかを調べる 'levels(fac)'と 'as.numeric(levels(fac)) 'を見てください。 –

62

factorのヘルプページから直接引用:

が元の数値にf係数を変換するには、as.numeric(levels(f))[f]が推奨とas.numeric(as.character(f))よりもわずかに効率的です。

+0

#bazinga。読書は基本的です! – d8aninja

関連する問題