2012-03-10 12 views
0

私は単純な変換をしようとしています。私は、次のコードは、仕事を得ることができない、R:平均とsd関数を使って標準化する

data_stdz <- transform(data_header, z.v1 = v1+2) 

:しかし、私は次のコードを使用しました、それがうまく働いた

data_stdz <- transform(data_header, z.v1 = (v1 - mean(v1))/(2*sd(v1)) 

私もちょうど平均機能を取得しようとしました動作するように:

data_stdz <- transform(data_header, z.v1 = mean(v1) 

しかし、私は次のエラーを取得しておいてください。

Error: unexpected symbol in: 
"data_std2 <- transform(data_header, z.v1 = mean(v1) 
data_std2" 

だから私はそれは私が平均とsdの機能をどのように使っているかと関係があると推測していますが、私はそれを理解することができませんでした。

データ例:(何ギャビンとするadditonに)

v1 v2 v3 
6.7 3.8 1.2 
6.3 3.2 1.2 
6.1 2.6 1.6 
7 2.4 1 
NA NA NA 
6.5 3.6 2.6 
6.1 2.4 1.6 
6 5.6 5.2 
7 2.8 1 
6.7 3.8 1.4 
5.7 4.2 2.6 
5.1 5.6 5 
NA NA NA 
+2

このエラーは即座に 'mean()'や 'sd()'を私に叫ばせません。両方の 'transform()'呼び出しで、閉じ括弧が欠けています。それが問題の原因だと思われます。 –

+0

括弧Gavinのキャッチをありがとう! – Tom

+0

また、 'scale'関数を見る価値があります。 –

答えて

1

あなたの問題は、NAS可能性があります。以下のようにna.rm=TRUEを使用します。

transform(data_header, z.v1 = (v1 - mean(v1, na.rm =T))/(2*sd(v1, na.rm =T))) 
+0

これはうまくいきました。さもなければ私はすべてのNAを得ていました。 – Tom

+0

Dirkの提案も見てください。それは、あなたが試みていることに対するより良いアプローチかもしれません。とTomは関数に問題があるとき(あなたがRにいかに新しいかわからない) '?mean'のように?function.nameを使用すると、引数を含む関数に関する素晴らしいヘルプファイルが得られます。多くの場合、エラーにつながる不適切な引数指定です。 –

+0

Rにはまったく新しく、二重かっこを見るのは新規ではありません。アドバイスをいただきありがとうございます。私は平均的な機能についての情報を探しましたが、それは有用ではありませんでしたが、意味はです。 – Tom

2

ベースRは、この目的のためにscale()機能を持っています。

+0

私の答えはポスターの緊急の問題に答えていますが、Dirksはあなたがしようとしていることに対するより良いアプローチです。 'scale'には他にもたくさんの議論があります。 –

+0

scale()関数を考えましたが、それを使って2 * sdを計算する方法がわかりませんでした。 – Tom

関連する問題