2016-03-31 6 views
2

R(バージョン3.2.3)を使用して、同じ値のデータフレーム内の複数の変数を文字値(「高」、「中」、「低」、 「No Concerns」)から数値(4,3,2および1)に変更します。私は変数をコード化するいくつかの方法があることを知っています。私の例では、カーパッケージの "recode"関数を使っています。これは1つの変数を記録するときに問題なく動作しますが、複数の変数(列45〜68)を指定すると、すべての値が「該当なし」に置き換えられます。複数の変数を文字から数値に効率的に記録するR

df[,c(45:68)] <- recode(df[,c(45:68)],"'High'=4;'Medium'=3;'Low'=2;'No Concerns'=1",as.numeric.result=TRUE) 

私は私が間違ってここに行くかもしれない場所に任意のポインタをいただければ幸いです。私はコーディングのコミュニティに新しいので、私は私の質問に十分な詳細を提供している場合はお知らせください。

+2

ようこそStackOverflow!あなたの質問に十分な詳細を提供することに関して:[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)と[再現可能な例]を与える方法についての情報を読んでください( http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610)。これは他の人があなたを助けることをはるかに容易にします。 – Jaap

+0

「data.matrix」を使用してください。 'as.data.frame(Titanic)'と 'data.matrix(as.data.frame(Titanic)) 'を比較します。 – lukeA

+0

Procrastinatus Maximus - 良い質問をし、実行可能な例を提供するアドバイスをありがとう。 –

答えて

2

次のことを試してみてください。

df[,c(45:68)] <- lapply(df[,c(45:68)], function(x) 
       recode(x,"'High'=4; 
          'Medium'=3; 
          'Low'=2; 
          'No Concerns'=1", 
          as.numeric.result=TRUE)) 

ここで何が起こるあなたがrecodeに個々の列を渡すことです。 recodeというヘルプファイルを見ると、数値ベクトル、文字ベクトル、または因子が入力として期待されていることがわかります。あなたのコードでは、しかし、リストを提供します。上記のコードは、コード化する個々の列を提供します。もちろん、適切なサンプルデータがなければ、伝えるのは難しいですが、試してみてください。

関連する問題