我试图进行简单的转换。我使用了以下代码并且运行正常:
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函数有关,但我无法弄明白。
数据示例:
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
答案 0 :(得分:2)
Base R为此目的具有scale()
功能。
答案 1 :(得分:1)
您的问题很可能(除了gavin所说的)NAs。使用na.rm=TRUE
,如下所示:
transform(data_header, z.v1 = (v1 - mean(v1, na.rm =T))/(2*sd(v1, na.rm =T)))