开发者

Function that converts a vector of numbers to a vector of standard units

Is there a function that given a vector of numbers, returns another vector with the standard units corresponding to each value?

where standard unit: how many SDs a value is + or - from the mean

Example:

 x <- c(1,3,4,5,7)    # note: mean = 4, sd = 2
 foo(x) 
 [1]  -1.5  -0.5  0.0  0.5  1.5

Is this开发者_如何学JAVA fictitious "foo" function already included in a package?


yes, scale():

x <- c(1,3,4,5,7)
scale(x)


The function you are looking for is scale.

scale(x)


           [,1]
[1,] -1.3416408
[2,] -0.4472136
[3,]  0.0000000
[4,]  0.4472136
[5,]  1.3416408
attr(,"scaled:center")
[1] 4
attr(,"scaled:scale")
[1] 2.236068

Note that the answers are not identical to what you posted in your question. The reason is that the standard deviation in your x is actually 2.23, not 2.

sd(x)
[1] 2.236068


How about simply (x-mean(x))/sd(x), or am I missing some subtlety here?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜