1

次のdata.frameがあります:

employee <- c('John Doe','Peter Gynn','Jolie Hope')
# Note that the salary below is in stringified format.
# In reality there are more  such stringified numerical columns.
salary <- as.character(c(21000, 23400, 26800))
df <- data.frame(employee,salary)

出力は次のとおりです。

> str(df)
'data.frame':   3 obs. of  2 variables:
 $ employee: Factor w/ 3 levels "John Doe","Jolie Hope",..: 1 3 2
 $ salary  : Factor w/ 3 levels "21000","23400",..: 1 2 3

私がやりたいことは、値の変更を文字列から直接df変数から純粋な数値に変換することです。同時に、 の文字列名を保持しますemployee。私はこれを試しましたが、うまくいきません:

as.numeric(df)

一日の終わりに、これらの数値に対して算術演算を実行したいと思いますdf。などdf2 <- log2(df)_

4

1 に答える 1

4

わかりました、ここでいくつかのことが起こっています:

  • R には、文字列のように見える 2 つの異なるデータ型がfactorあります。character
  • ほとんどの R オブジェクトをその場で変更することはできません。割り当てによって変更する必要があります

あなたの例の実際の修正は次のとおりです。

df$salary = as.numeric(as.character(df$salary))

最初に変換せずas.numericに呼び出そうとすると、やや奇妙な結果が得られます。df$salarycharacter

> as.numeric(df$salary)
[1] 1 2 3

R が因子を作成すると、ベクトルの一意の要素がレベルに変換され、整数を使用してそれらのレベルが表されます。これは、数値に変換しようとしたときに表示されるものです。

于 2013-09-10T03:25:42.370 に答える