0

我正在尝试做一个简单的转换。我使用了以下代码,它运行良好:

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

但是,我无法让以下代码工作:

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

我也试图让 mean 函数起作用:

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

但是,我不断收到以下错误:

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

所以我猜这与我如何使用 mean 和 sd 函数有关,但我无法弄清楚。

数据示例:

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

Base 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 回答