[R] z-transform each column of a data.frame

Gavin Simpson gavin.simpson at ucl.ac.uk
Fri Jan 20 18:12:59 CET 2012


On Fri, 2012-01-20 at 18:04 +0100, Martin Batholdy wrote:
> Hi,
> 
> 
> I am currently trying to z-transform (that is subtracting the mean and divide by the standard deviation) multiple columns of a data.frame at the same time.
> 
> 
> My first approach was:
> 
> x <- data.frame(c(0:10), c(10:20))
> (x - colMeans(x)) / apply(x, 2, sd)
> 
> 
> This is obviously not working.
> 
> Is there a convenient way to z-transform each column separately (so in this case, each column represents an independent variable that should be z-transformed)

?scale

> scale(x)
         c.0.10.   c.10.20.
 [1,] -1.5075567 -1.5075567
 [2,] -1.2060454 -1.2060454
 [3,] -0.9045340 -0.9045340
 [4,] -0.6030227 -0.6030227
 [5,] -0.3015113 -0.3015113
 [6,]  0.0000000  0.0000000
 [7,]  0.3015113  0.3015113
 [8,]  0.6030227  0.6030227
 [9,]  0.9045340  0.9045340
[10,]  1.2060454  1.2060454
[11,]  1.5075567  1.5075567
attr(,"scaled:center")
 c.0.10. c.10.20. 
       5       15 
attr(,"scaled:scale")
 c.0.10. c.10.20. 
3.316625 3.316625

> 
> thanks!
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 

-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
 ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
 UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%



More information about the R-help mailing list