Take a look at tapply and %/% which could help you to create indices for groups.
> x=cbind(id=1:23,var1=rnorm(23)) > tapply(x[,"var1"],1:length(x[,"var1"])%/%5,rowMeans) 0 1 2 3 4 0.393473633 0.412297253 -0.221925003 -0.005212217 -1.564881727
If your data has severall variables, also look at aggregate
> x=cbind(var1=rnorm(23),var2=rnorm(23)) > aggregate(x,by=list(groups=1:dim(x)[1]%/%5),FUN=mean)
(and then you can call rowMeans on the result)
Eric
At 14:03 4/12/2003, Jan Wantia wrote:
Dear all!
After hours of trying around, I gave up:
I have a 2-dimensional array, and I know how to split it into its rows and how to get the mean for every row using 'sapply'.
But what I want is to calculate the mean over the first n rows, and then the second n rows, etc., so that I get a vector like:
v == mean1(row 1:5), mean2(row6:10),...
(trivial, you might say. I find it rather mind-boggling, though: I tried to get the mean from the array before splitting it, after splitting it, looping through it with for-loops...I feel like an idiot by now; looks like I missed a crucial point of how 'R' works.)
Thanks a lot in advance! --
______________________________________________________
Jan Wantia Dept. of Information Technology, University of Zürich Andreasstr. 15 CH 8050 Zürich Switzerland
Tel.: +41 (0) 1 635 4315 Fax: +41 (0) 1 635 45 07 email: [EMAIL PROTECTED]
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help
-------------------------------------------------- L'erreur est certes humaine, mais un vrai désastre nécessite un ou deux ordinateurs. Citation anonyme -------------------------------------------------- Eric Lecoutre Informaticien/Statisticien Institut de Statistique / UCL
TEL (+32)(0)10473050 [EMAIL PROTECTED] URL http://www.stat.ucl.ac.be/ISpersonnel/lecoutre
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help