Rで因子から数値変数に変換する際の問題[終了]


11

因子変数を数値に変換したいのですが、as.numeric期待した効果がありません。

以下に、元の変数に基づく変数の数値バージョンの要約統計を取得します。手段は1ずつカウントアップし続けます...おそらく(彼は推測します)因子のレベルには名前と数値の両方があり、数値as.numericを使用するように設計されている場合、新しい変数の値は名前から来ると期待していますか?

> describe.by(as.numeric(df$sch), df$sch)

group: 
  var    n mean sd median trimmed mad min max range skew kurtosis se
1   1 5389    1  0      1       1   0   1   1     0  NaN      NaN  0
--------------------------------------------------------- 
group: 001
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 19    2  0      2       2   0   2   2     0  NaN      NaN  0
--------------------------------------------------------- 
group: 002
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 54    3  0      3       3   0   3   3     0  NaN      NaN  0
--------------------------------------------------------- 

1
追加した新しいタグを削除しました。それらは私には一般的すぎて差別的ではないか、as.factorが狭すぎる場合(Rベースの関数であるため)のように思えました。何かが失われたと思われる場合は、タグを付け直してください。
JMS

回答:


28

正解as.numeric(factor)です。Rがその因子のレベルに割り当てる数値を返します。あなたは試すことができますas.numeric(as.character(factor))


4
この回答が示唆しているように、stackoverflow.com as.numeric(levels(f))[f]as.numeric(as.character(f))
a / 3418192/476907

ありがとうございました!この回答は私に大いに役立ちました:)
Yasha

13

これは、Rのよく寄せられる質問のFAQ 7.10です。はい、因子は1からレベル数までの整数として格納され、as.numericは基になるコードを提供します。FAQは、数値に変換する2つの方法を提供します。

ただし、これは通常、データを読み取るときに、Rが数値ではなく因子(多くの場合、数値以外の文字)として処理する原因となったデータについて何かがあったためです。多くの場合、生データを修正する(変換によって非数値部分がNAに変換される)か、read.tableなどを使用している場合はcolClasses引数を使用する方が適切です。


1
values.tmp <-sapply(possibleValues、as.numeric); values.nonnumeric <-values.tmp [is.na(values.tmp)]
russellpierce
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.