Hi
r-help-boun...@r-project.org napsal dne 27.03.2010 11:53:30: > Hi: > > Does this do what you want? > > # Create some fake data... > > df <- data.frame(id = factor(rep(c('cell1', 'cell2'), each = 10)), > cond = factor(rep(rep(c('A', 'B'), each = 5), 2)), > time = round(rnorm(20, 350, 10), 2)) > > # Create a function to subtract each element of a vector from its mean > f <- function(x) x - mean(x) > # Load the plyr package, which contains the function ddply(): > library(plyr) > df2 <- ddply(df, .(id, cond), transform, dev = f(time)) another option is ave df2 <- data.frame(df, dev=ave(df$time, df$id, df$cond, FUN=f)) Regards Petr > > # output > > df2 > id cond time dev > 1 cell1 A 353.01 7.226 > 2 cell1 A 351.06 5.276 > 3 cell1 A 343.59 -2.194 > 4 cell1 A 341.50 -4.284 > 5 cell1 A 339.76 -6.024 > 6 cell1 B 351.18 0.644 > 7 cell1 B 340.53 -10.006 > 8 cell1 B 345.09 -5.446 > 9 cell1 B 347.44 -3.096 > 10 cell1 B 368.44 17.904 > 11 cell2 A 343.48 -3.776 > 12 cell2 A 352.35 5.094 > 13 cell2 A 350.78 3.524 > 14 cell2 A 340.38 -6.876 > 15 cell2 A 349.29 2.034 > 16 cell2 B 364.45 15.524 > 17 cell2 B 354.52 5.594 > 18 cell2 B 350.41 1.484 > 19 cell2 B 345.78 -3.146 > 20 cell2 B 329.47 -19.456 > > # cell means > > with(df, aggregate(time, list(id = id, cond = cond), mean)) > id cond x > 1 cell1 A 345.784 > 2 cell2 A 347.256 > 3 cell1 B 350.536 > 4 cell2 B 348.926 > > HTH, > Dennis > > On Fri, Mar 26, 2010 at 1:31 PM, Dgnn <sharkbrain...@gmail.com> wrote: > > > > > I have a data frame containing the results of time measurements taken from > > several cells. Each cell was measured in conditions A and B, and there are > > an arbitrary number of measurements in each condition. I am trying to > > calculate the difference of each measurement from the mean of a given cell > > in a given condition without relying on loops. > > > > >my.df > > id cond time > > 1 cell1 A 343.5 > > 2 cell1 A 355.2 > > ... > > 768 cell1 B 454.0 > > ... > > 2106 cell2 A 433.9 > > ... > > > > as a first approach I tried: > > > > > mews<-aggregate(my.df$time, list(cond=data$id, id=data$cond), mean) > > id cond time > > cell1 A 352 > > cell1 B 446 > > cell2 A 244 > > cell2 B ... > > > > I then tried to use %in% to match id and cond of mews with my.df, but I > > haven't been able to get it to work. > > Am I on the right track? What are some other solutions? > > > > Thanks for any help. > > > > jason > > > > > > -- > > View this message in context: > > http://n4.nabble.com/a-vectorized-solution-to-some-simple-dataframe-math- > tp1692810p1692810.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. > > > > [[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.