[R] Averaging rows if a condition is true.

Mohamed Lajnef Mohamed.lajnef at inserm.fr
Mon Sep 7 17:52:48 CEST 2009


Hi,

Try to use aggregate function
RSiteSearch ("aggregate")   #for help


Regards
ML

A Ezhil a écrit :
> Dear All,
>
> I have matrix (50000 X 60) of subjects and their responses to a set of questions. All responses are classified into categories (500). I would like to average all subject's responses for each category. I wrote a code using a for loop but is not working. Could please tell me what's wrong with the code? I guess, there is a elegant R way of doing the same thing.
>
> Thanks in advance.
>
> Kind regards,
> Ezhil
>
>
> j <- 1; n <- dim(dat)[1]; cat <- as.character(dat[,1]);
> row <- matrix(nrow=nrow(dat), ncol=ncol(dat));
> for(i in 1:n-1) {
>   if(cat[i] != cat[i+1]) {row[j, ] <- dat[j, ]}
>   else {
>       start <- j;
>       end <- i;
>       }
>       row[j, ] <- colMeans(dat[j:i, ]);
>       j+1;
>   }
>
> ______________________________________________
> 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.
>
>   


-- 
Mohamed Lajnef
INSERM Unité 955. 
40 rue de Mesly. 94000 Créteil.
Courriel : Mohamed.lajnef at inserm.fr 
tel. : 01 49 81 31 31 (poste 18470)
Sec : 01 49 81 32 90
fax : 01 49 81 30 99 




More information about the R-help mailing list