Ignoring the fact your desired answers are wrong, I'd split the separating part and the group means parts into three steps:
i) quantile() can help you get the split points, ii) findInterval() can assign each y to a group iii) then ave() or tapply() will do group-wise means Something like: y <- c(36, 45, 46, 66, 78, 125, 193, 209, 242, 297) # You need a "c" here. ave(y, findInterval(y, quantile(y, c(0.33, 0.66)))) tapply(y, findInterval(y, quantile(y, c(0.33, 0.66))), mean) You could also use cut2 from the Hmisc package to combine findInterval and quantile into a single step. Depending on your desired output. Hope that helps, Michael On Tue, Apr 3, 2012 at 8:47 AM, Val <valkr...@gmail.com> wrote: > Hi all, > > Assume that I have the following 10 data points. > x=c( 46, 125 , 36 ,193, 209, 78, 66, 242 , 297 , 45) > > sort x and get the following > y= (36 , 45 , 46, 66, 78, 125,193, 209, 242, 297) > > I want to group the sorted data point (y) into equal number of > observation per group. In this case there will be three groups. The first > two groups will have three observation and the third will have four > observations > > group 1 = 34, 45, 46 > group 2 = 66, 78, 125 > group 3 = 193, 209, 242,297 > > Finally I want to calculate the group mean > > group 1 = 42 > group 2 = 87 > group 3 = 234 > > Can anyone help me out? > > In SAS I used to do it using proc rank. > > thanks in advance > > Val > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.