P1-tapply(P1,Experiment,mean)[Experiment] HTH, Daniel
ronny wrote: > > Hi, > > I would like to center P1 and P2 of the following data frame by the factor > "Experiment", i.e. substruct from each value the average of its > experiment, and keep the original data structure, i.e. the experiment and > the group of each value. > > RAW= > data.frame("Experiment"=c(2,2,2,1,1,1),"Group"=c("A","A","B","A","A","B"),"P1"=c(10,12,14,5,3,4),"P2"=c(8,12,16,2,3,4)) > > Desired result: > > NORMALIZED= > data.frame("Experiment"=c(2,2,2,1,1,1),"Group"=c("B","A","B","B","A","B"),"P1"=c(-2,0,2,1,-1,0),"P2"=c(-4,0,4,-1,0,1)) > > I tried using "by", but then I lose the original order, and the "Group" > varaible. Can you help? > >> RAW > Experiment Group P1 P2 > 2 A 10 8 > 2 A 12 12 > 2 B 14 16 > 1 A 5 2 > 1 A 3 3 > 1 B 4 4 > > NOT.OK<- within (RAW, > {P1<-do.call(rbind,by(RAW$P1,RAW$Experiment,scale,scale=F))}) > >> NOT.OK > Experiment Group P1 P2 > 2 A 1 8 > 2 A -1 12 > 2 B 0 16 > 1 A -2 2 > 1 A 0 3 > 1 B 2 4 > -- View this message in context: http://r.789695.n4.nabble.com/Centering-data-frame-by-factor-tp3677609p3677620.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.