[R] Summary statistics for matrix columns

arun smartpink111 at yahoo.com
Fri Nov 23 16:19:42 CET 2012


HI,
You are right.
It is slower when compared to Pete's solution:
set.seed(125)
x <- matrix(sample(1:800000),nrow=1000)
colnames(x)<- paste("Col",1:ncol(x),sep="")

system.time({
res<-sapply(data.frame(x),function(x) c(summary(x),sd=sd(x),IQR=IQR(x)))
 res1<-as.matrix(res) 
res2<-res1[c(1:4,7,5,8,6),] })
# user  system elapsed 
#  0.596   0.000   0.597 

system.time({
res<-apply(x,2,function(x) c(Min=min(x),
                        "1st Qu" =quantile(x, 0.25,names=FALSE),
                        Median = quantile(x, 0.5, names=FALSE),
                        Mean= mean(x),
                        Sd=sd(x),
                        "3rd Qu" = quantile(x,0.75,names=FALSE),
                        IQR=IQR(x),
                        Max = max(x))) })
# user  system elapsed 
 # 0.384   0.000   0.384 


A.K.



----- Original Message -----
From: Pete Brecknock <Peter.Brecknock at bp.com>
To: r-help at r-project.org
Cc: 
Sent: Friday, November 23, 2012 8:42 AM
Subject: Re: [R] Summary statistics for matrix columns

frespider wrote
> Hi,
> 
> it is possible. but don't you think it will slow the code if you convert
> to data.frame?
> 
> Thanks 
> 
> Date: Thu, 22 Nov 2012 18:31:35 -0800
> From: 

> ml-node+s789695n4650500h51 at .nabble

> To: 

> frespider@

> Subject: RE: Summary statistics for matrix columns
> 
> 
> 
>     HI,
> 
> Is it possible to use as.matrix()?
> 
> res<-sapply(data.frame(x),function(x) c(summary(x),sd=sd(x),IQR=IQR(x)))
> 
>  res1<-as.matrix(res)
> 
>  is.matrix(res1)
> 
> #[1] TRUE
> 
> res1[c(1:4,7,5,8,6),]
> 
> #            Col1     Col2     Col3     Col4     Col5     Col6     Col7    
> Col8
> 
> #Min.    10.00000  1.00000 17.00000  3.00000 18.00000 11.00000 13.00000
> 15.00000
> 
> #1st Qu. 24.75000 29.50000 26.00000  7.75000 40.00000 17.25000 27.50000
> 34.75000
> 
> #Median  34.00000 46.00000 42.50000 35.50000 49.50000 23.50000 51.50000
> 51.50000
> 
> #Mean    42.50000 42.75000 41.75000 35.75000 44.88000 26.88000 44.75000
> 50.12000
> 
> #sd      25.05993 27.77846 19.57221 28.40397 16.39196 16.60841 21.97239
> 25.51995
> 
> #3rd Qu. 67.75000 58.50000 50.00000 63.25000 54.25000 30.25000 56.25000
> 70.50000
> 
> #IQR     43.00000 29.00000 24.00000 55.50000 14.25000 13.00000 28.75000
> 35.75000
> 
> #Max.    74.00000 77.00000 76.00000 70.00000 65.00000 63.00000 79.00000
> 80.00000
> 
>   #          Col9    Col10
> 
> #Min.     2.00000  6.00000
> 
> #1st Qu. 24.50000 12.50000
> 
> #Median  33.50000 48.00000
> 
> #Mean    34.88000 40.75000
> 
> #sd      24.39811 28.21727
> 
> #3rd Qu. 45.25000 63.00000
> 
> #IQR     20.75000 50.50000
> 
> #Max.    71.00000 72.00000
> 
> Solves the order and the matrix output!
> 
> A.K.
> 
> 
> 
> 
> 
>     
>     
>     
>     
> 
>     
> 
>     
>     
>         If you reply to this email, your message will be added to the discussion
> below:
>     
> http://r.789695.n4.nabble.com/Summary-statistics-for-matrix-columns-tp4650489p4650500.html
>     
>     
>         
>         To unsubscribe from Summary statistics for matrix columns, click here.
> 
>         NAML

Then maybe ....

x <- matrix(sample(1:8000),nrow=100) 
colnames(x)<- paste("Col",1:ncol(x),sep="") 

apply(x,2,function(x) c(Min=min(x), 
                        "1st Qu" =quantile(x, 0.25,names=FALSE), 
                        Median = quantile(x, 0.5, names=FALSE),
                        Mean= mean(x),
                        Sd=sd(x), 
                        "3rd Qu" = quantile(x,0.75,names=FALSE),
                        IQR=IQR(x),
                        Max = max(x)))

HTH

Pete



--
View this message in context: http://r.789695.n4.nabble.com/Summary-statistics-for-matrix-columns-tp4650489p4650547.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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.




More information about the R-help mailing list