R: стандартизировать, используя среднее и SD-функции - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь сделать простое преобразование. Я использовал следующий код, и он работал нормально:

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"

Так что я предполагаю, что это как-то связано с тем, как я использую средства 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

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

База R имеет функцию scale() для этой цели.

1 голос
/ 11 марта 2012

Вероятно, ваша проблема (в дополнение к тому, что сказал Гэвин) АН. Используйте na.rm=TRUE как в:

transform(data_header, z.v1 = (v1 - mean(v1, na.rm =T))/(2*sd(v1, na.rm =T)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...