?aggregate should do it aggregate(df$x,list(df$comn, df$mi), sd)
There are other ways of course Using the reshape2 package library(reshape2) x1 <- melt(df, id=c("comn", "mi")) dcast(x1, comn + mi ~ variable, sd) --- On Sun, 12/4/11, Aurélien PHILIPPOT <aurelien.philip...@gmail.com> wrote: > From: Aurélien PHILIPPOT <aurelien.philip...@gmail.com> > Subject: [R] Group several variables and apply a function to the group > To: R-help@r-project.org > Received: Sunday, December 4, 2011, 3:32 PM > Dear R-experts, > I am struggling with the following problem, and I am > looking for advice > from more experienced R-users: I have a data frame with 2 > identifying > variables (comn and mi), and an output variable (x). comn > is a variable for > a company and mi is a variable for a month. > > comn<-c("abc", "abc", "abc", "abc", "abc", "abc", "xyz", > "xyz","xyz", "xyz") > mi<- c("1", "1","1", "2", "2", "2", "1", "1", "3", "3") > x<- c("-0.0031", "0.0009", "-0.007", "0.1929","0.0087", > "0.099","-0.089", > "0.005", "-0.0078", "0.67" ) > df<- data.frame(comn=comn, mi=mi, x=x) > > > For each company, within a particular month, I would like > to compute the > standard deviation of x: for example, for abc, I would like > to compute the > sd of x for month1 (when mi=1) and for month2 (when mi=2). > > In other languages (Stata for instance), I would create a > grouping variable > (group comnn and mi) and then, apply the sd function for > each group. > > However, I don't find an elegant way to do the same in R: > > I was thinking about the following: I could subset my data > frame by mi and > create one file per month, and then make a loop and in each > file, use a > "by" operator for each comn. I am sure it would work, but I > feel that it > would be like killing an ant with a tank. > > I was wondering if anyone knew a more straightforward way > to implement that > kind of operation? > > Thanks a lot, > > Best, > Aurelien > > [[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.