thanks Gabor, and rmailbox. On Fri, Dec 5, 2008 at 3:32 PM, <[EMAIL PROTECTED]> wrote:
> > Here is a solution using doBy and Gabor's DF2 created below: > > library( doBy ) > newrows <- summaryBy ( myNum1 + myNum2 + myNum3 ~ myType , DF2, keep.names > = TRUE ) > newrows[,"myID"] <- "+" > rbind ( DF2, newrows) > > > > > > ----- Original message ----- > From: "Gabor Grothendieck" <[EMAIL PROTECTED]> > To: "Ferry" <[EMAIL PROTECTED]> > Cc: r-help@r-project.org > Date: Fri, 5 Dec 2008 17:50:42 -0500 > Subject: Re: [R] adding rows as arithmatic calculation on original rows > > Here is a solution using sqldf > > > > library(sqldf) > > DF2 <- > structure(list(myID = structure(1:4, .Label = c("a", "b", "c", > "d"), class = "factor"), myType = structure(c(2L, 2L, 1L, 1L), .Label > = c("Double", > "Single"), class = "factor"), myNum1 = c(10, 15, 22, 4), myNum2 = c(11, > 25, 33, 6), myNum3 = c(12, 35, 44, 8)), .Names = c("myID", "myType", > "myNum1", "myNum2", "myNum3"), row.names = c(NA, -4L), class = > "data.frame") > > sqldf("select 1 TotalLevel, '+' myID, myType, avg(myNum1) myNum1, > avg(myNum2) myNum2, avg(myNum3) myNum3 > from DF2 > group by myType > union > select 0 TotalLevel, * > from DF2 > order by myType, TotalLevel, myID", > method = "raw")[-1] > > The output is (display in fixed font): > > myID myType myNum1 myNum2 myNum3 > 1 c Double 22.0 33.0 44.0 > 2 d Double 4.0 6.0 8.0 > 3 + Double 13.0 19.5 26.0 > 4 a Single 10.0 11.0 12.0 > 5 b Single 15.0 25.0 35.0 > 6 + Single 12.5 18.0 23.5 > > > > On Fri, Dec 5, 2008 at 3:21 PM, Ferry <[EMAIL PROTECTED]> wrote: > > Dear R users, > > > > Suppose I have the following data.frame: > > > > myID myType myNum1 myNum2 myNum3 > > a Single 10 11 12 > > b Single 15 25 35 > > c Double 22 33 44 > > d Double 4 6 8 > > > > and I want to have new records: > > > > myID myType myNum1 myNum2 myNum3 > > e Single 12.5 18 23.5 > > f Double 13 19.5 28 > > > > where record e got its myNum1-3 as the average from record a and b, and > > record f got its myNum1-3 as the average from record c and d. > > > > and the final data.frame should be like the following: > > > > myID myType myNum1 myNum2 myNum3 > > a Single 10 11 12 > > b Single 15 25 35 > > e Single 12.5 18 43.5 > > c Double 22 33 44 > > d Double 4 6 8 > > f Double 13 19.5 28 > > > > Any idea is appreciated. Thanks beforehand. > > > > Ferry > > > > [[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. > > ______________________________________________ > 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.