0

簡単な変換をしようとしています。私は次のコードを使用しましたが、正常に機能しました。

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"

ですから、平均値と標準偏差の関数をどのように使用しているかに関係があると思いますが、それを理解することはできませんでした。

データ例:

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
4

2 に答える 2

2

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

于 2012-03-10T20:53:03.243 に答える
1

あなたの問題はおそらく(gavinが言ったことに加えて)NAです。次のように使用na.rm=TRUEします。

transform(data_header, z.v1 = (v1 - mean(v1, na.rm =T))/(2*sd(v1, na.rm =T)))
于 2012-03-10T20:41:14.773 に答える