[R] get level combinations from "by" list

Chuck Cleland ccleland at optonline.net
Wed Jun 8 17:15:02 CEST 2005


Here is a different approach to achieving what I think you want using 
summarize() in the Hmisc package:

library(Hmisc)

mydata <- data.frame(a = sample(1:5,200,replace=TRUE),
                      b = sample(c("v1","v2","v3"),200,replace=TRUE),
                      c = sample(c(11,22,33),200,replace=TRUE),
                      y = runif(200))

attach(mydata)

summarize(y, llist(a, b, c),
                function(x){c(min=min(x),
                              max=max(x),
                              median=round(median(x),digits=2),
                              mean=round(mean(x),digits=2))},
                              stat.name="min")

detach(mydata)

bogdan romocea wrote:
> Dear useRs,
> 
> Given this code I end up with a list of class "by":
> 
> a <- sample(1:5,200,replace=TRUE)
> b <- sample(c("v1","v2","v3"),200,replace=TRUE)
> c <- sample(c(11,22,33),200,replace=TRUE)
> data <- runif(200)
> grouped <- by(data,list(a,b,c),function(x) {c(min=min(x),max=max(x),
> 	median=round(median(x),digits=2),mean=round(mean(x),digits=2))})
> dfr <- do.call("rbind",grouped)    #the levels are missing
> #----------
> grouped
> typeof(grouped)
> class(grouped)
> dimnames(grouped)
>  
> How do I get at the levels of the 'group by' variables for each
> subset? For example, from this part of the "by" list I want 4, v2 and
> 33:
> : 4
> : v2
> : 33
>       min       max    median      mean
> 0.3897450 0.9215315 0.7300000 0.6700000
> ---------------------------------------
> 
> Thank you,
> b.
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 452-1424 (M, W, F)
fax: (917) 438-0894




More information about the R-help mailing list