Hi:
Assuming I interpreted your intentions correctly, here are three different
ways to get means of Q and T by combinations of dP and n. Your data were
read into a data frame named dd. (Note that there are other ways to do this
as well...)
(1) aggregate():
with(dd, aggregate(cbind(Q, T) ~ dP + n, data = dd, FUN = mean))
dP n Q T
1 10 1 0.4145455 21.60000
2 20 1 0.8100000 21.60000
3 30 1 1.2100000 21.59444
4 40 1 1.5905556 21.50000
5 50 1 1.8380000 21.50000
6 10 2 0.2033333 22.40000
7 20 2 0.4311111 22.40000
8 30 2 0.6012500 22.40000
9 40 2 0.7700000 22.40000
(2) Function summaryBy() in package doBy:
library(doBy)
summaryBy(Q + T ~ dP + n, data = dd, FUN = mean)
dP n Q.mean T.mean
1 10 1 0.4145455 21.60000
2 10 2 0.2033333 22.40000
3 20 1 0.8100000 21.60000
4 20 2 0.4311111 22.40000
5 30 1 1.2100000 21.59444
6 30 2 0.6012500 22.40000
7 40 1 1.5905556 21.50000
8 40 2 0.7700000 22.40000
9 50 1 1.8380000 21.50000
(3) Function ddply() in package plyr:
library(plyr)
ddply(dd, .(dP, n), summarise, Qavg = mean(Q), Tavg = mean(T))
dP n Qavg Tavg
1 10 1 0.4145455 21.60000
2 10 2 0.2033333 22.40000
3 20 1 0.8100000 21.60000
4 20 2 0.4311111 22.40000
5 30 1 1.2100000 21.59444
6 30 2 0.6012500 22.40000
7 40 1 1.5905556 21.50000
8 40 2 0.7700000 22.40000
9 50 1 1.8380000 21.50000
HTH,
Dennis
On Mon, Aug 16, 2010 at 1:12 AM, Benoit Boulinguiez <
benoit.boulinguiez@ensc-rennes.fr> wrote:
> Dear R users,
>
> I seek for a more elegant manner to manipulate my data that that I produced
> so far.
> Data is in a data frame THC515.DATA -sample at the end of this mail- of 5
> variables, a string and 4 continuous numeric variables.
>
> I need to get the mean of two variables "Q" and "T" at
the levels of a
> third one "dP", individually for each level of "n".
> I managed my way through it, but it is really "roughly" done.
I'd like to
> learn a more elegant manner for that.
> Thanks for your time.
>
> The unaesthetic code I produced so far is as follows:
>
> ############ DATA MANIPULATION
> THC515<-aggregate(subset(THC515.DATA,n==1)$Q
> ,list(subset(THC515.DATA,n==1)$dP),mean)
> names(THC515)<-c("dP","Q")
> tmp.T<-tapply(subset(THC515.DATA,n==1)$T
> ,subset(THC515.DATA,n==1)$dP,mean)
> THC515<-cbind(THC515,
> T=tmp.T
> ,mat=rep("THC515",length(tmp.T))
> ,n=rep(1,length(tmp.T))
> )
>
> layers<-as.numeric(levels(factor(THC515.DATA$n)))
> for(i in 2:length(layers)){
> tmp.THC515<-aggregate(subset(THC515.DATA,n==layers[i])$Q
> ,list(subset(THC515.DATA,n==layers[i])$dP),mean)
> names(tmp.THC515)<-c("dP","Q")
> tmp.T<-tapply(subset(THC515.DATA,n==layers[i])$T
> ,subset(THC515.DATA,n==layers[i])$dP,mean)
> tmp.THC515<-cbind(tmp.THC515,
> T=tmp.T
> ,mat=rep("THC515",length(tmp.T))
> ,n=rep(layers[i],length(tmp.T))
> )
> THC515<-rbind(THC515,tmp.THC515)
> }
> THC515.DATA<-THC515
>
> #Original DATA
>
> mat n Q dP T
> THC515 1 0.25 10 21.6
> THC515 1 0.26 10 21.6
> THC515 1 0.27 10 21.6
> THC515 1 0.28 10 21.6
> THC515 1 0.29 10 21.6
> THC515 1 0.3 10 21.6
> THC515 1 0.32 10 21.6
> THC515 1 0.34 10 21.6
> THC515 1 0.36 10 21.6
> THC515 1 0.38 10 21.6
> THC515 1 0.4 10 21.6
> THC515 1 0.42 10 21.6
> THC515 1 0.44 10 21.6
> THC515 1 0.46 10 21.6
> THC515 1 0.48 10 21.6
> THC515 1 0.5 10 21.6
> THC515 1 0.52 10 21.6
> THC515 1 0.54 10 21.6
> THC515 1 0.56 10 21.6
> THC515 1 0.57 10 21.6
> THC515 1 0.58 10 21.6
> THC515 1 0.6 10 21.6
> THC515 1 0.62 20 21.6
> THC515 1 0.64 20 21.6
> THC515 1 0.66 20 21.6
> THC515 1 0.68 20 21.6
> THC515 1 0.7 20 21.6
> THC515 1 0.72 20 21.6
> THC515 1 0.74 20 21.6
> THC515 1 0.76 20 21.6
> THC515 1 0.78 20 21.6
> THC515 1 0.8 20 21.6
> THC515 1 0.82 20 21.6
> THC515 1 0.84 20 21.6
> THC515 1 0.86 20 21.6
> THC515 1 0.88 20 21.6
> THC515 1 0.9 20 21.6
> THC515 1 0.92 20 21.6
> THC515 1 0.94 20 21.6
> THC515 1 0.96 20 21.6
> THC515 1 0.98 20 21.6
> THC515 1 1 20 21.6
> THC515 1 1.04 30 21.6
> THC515 1 1.06 30 21.6
> THC515 1 1.08 30 21.6
> THC515 1 1.1 30 21.6
> THC515 1 1.12 30 21.6
> THC515 1 1.14 30 21.6
> THC515 1 1.16 30 21.6
> THC515 1 1.18 30 21.6
> THC515 1 1.2 30 21.6
> THC515 1 1.22 30 21.6
> THC515 1 1.24 30 21.6
> THC515 1 1.26 30 21.6
> THC515 1 1.28 30 21.6
> THC515 1 1.3 30 21.6
> THC515 1 1.32 30 21.6
> THC515 1 1.34 30 21.6
> THC515 1 1.35 30 21.6
> THC515 1 1.39 30 21.5
> THC515 1 1.42 40 21.5
> THC515 1 1.44 40 21.5
> THC515 1 1.46 40 21.5
> THC515 1 1.48 40 21.5
> THC515 1 1.5 40 21.5
> THC515 1 1.52 40 21.5
> THC515 1 1.54 40 21.5
> THC515 1 1.56 40 21.5
> THC515 1 1.58 40 21.5
> THC515 1 1.6 40 21.5
> THC515 1 1.62 40 21.5
> THC515 1 1.64 40 21.5
> THC515 1 1.66 40 21.5
> THC515 1 1.68 40 21.5
> THC515 1 1.7 40 21.5
> THC515 1 1.72 40 21.5
> THC515 1 1.74 40 21.5
> THC515 1 1.77 40 21.5
> THC515 1 1.79 50 21.5
> THC515 1 1.82 50 21.5
> THC515 1 1.84 50 21.5
> THC515 1 1.86 50 21.5
> THC515 1 1.88 50 21.5
> THC515 2 0.13 10 22.4
> THC515 2 0.14 10 22.4
> THC515 2 0.34 10 22.4
> THC515 2 0.35 20 22.4
> THC515 2 0.37 20 22.4
> THC515 2 0.39 20 22.4
> THC515 2 0.41 20 22.4
> THC515 2 0.43 20 22.4
> THC515 2 0.45 20 22.4
> THC515 2 0.47 20 22.4
> THC515 2 0.49 20 22.4
> THC515 2 0.52 20 22.4
> THC515 2 0.53 30 22.4
> THC515 2 0.55 30 22.4
> THC515 2 0.57 30 22.4
> THC515 2 0.59 30 22.4
> THC515 2 0.61 30 22.4
> THC515 2 0.63 30 22.4
> THC515 2 0.65 30 22.4
> THC515 2 0.68 30 22.4
> THC515 2 0.69 40 22.4
> THC515 2 0.71 40 22.4
> THC515 2 0.73 40 22.4
> THC515 2 0.75 40 22.4
> THC515 2 0.77 40 22.4
> THC515 2 0.79 40 22.4
> THC515 2 0.81 40 22.4
> THC515 2 0.83 40 22.4
> THC515 2 0.85 40 22.4
>
>
>
> --
> -------------
> Benoit Boulinguiez
> Ph.D student
> Ecole de Chimie de Rennes (ENSCR) Bureau 1.20
> Equipe CIP UMR CNRS 6226 "Sciences Chimiques de Rennes"
> Avenue du Général Leclerc
> CS 50837
> 35708 Rennes CEDEX 7
> Tel 33 (0)2 23 23 80 83
> Fax 33 (0)2 23 23 81 20
> http://www.ensc-rennes.fr/
>
> ______________________________________________
> 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.
>
[[alternative HTML version deleted]]