On Sep 21, 2010, at 3:00 PM, Martin Tomko wrote: > I am sure there is a simple solution to this... I have a column in a data > frame specifying a grouping (1, -1) for my observations, and need to mutliply > each observation in all the other columns of the data frame by the > corresponding value in the given column. I played with apply, and saw some > suggestions for sweep, but did not manage to get it working. > > My table contains NAs.... > > Example of table as data frame > Observation Group Param1 Param2 > AA 1 3 4 > BB -1 5 6 > > > Expected result: > Observation Group Param1 Param2 > AA 1 3 4 > BB -1 -5 -6 > > group<-as.vector(table$Group) > I extracted the first column into a vector, and am looking for a way to > multiply each of the columns... SO far, only manual solutions (uglyyyy) work: > table$Param1<-group*table$Param1 > > Thanks many times! > Martin
One approach is to use ?transform: > DF Observation Group Param1 Param2 1 AA 1 3 4 2 BB -1 5 6 > transform(DF, Param1 = Param1 * Group, Param2 = Param2 * Group) Observation Group Param1 Param2 1 AA 1 3 4 2 BB -1 -5 -6 However, that is likely to get tedious with a large number of columns to the right of 'Group', presuming that your actual data may be wider than the above example. Thus, another approach may be: DF[, -c(1:2)] <- DF[, -c(1:2)] * DF$Group > DF Observation Group Param1 Param2 1 AA 1 3 4 2 BB -1 -5 -6 HTH, Marc Schwartz ______________________________________________ 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.