HI,
From the ?aggregate(), formula: a formula, such as ‘y ~ x’ or ‘cbind(y1, y2) ~ x1 + x2’, where the ‘y’ variables are numeric data to be split into groups according to the grouping ‘x’ variables (usually factors). So, I converted your data to factors for the grouping variable, the results are the same. convert.type1 <- function(obj,types){ for (i in 1:length(obj)){ FUN <- switch(types[i],character = as.character, numeric = as.numeric, factor = as.factor) obj[,i] <- FUN(obj[,i]) } obj } dat2<-convert.type1(dat1,c("factor","factor","factor","factor","factor","factor","factor","factor","numeric","factor","factor")) str(dat2) 'data.frame': 8 obs. of 11 variables: $ Data : Factor w/ 1 level "VTM": 1 1 1 1 1 1 1 1 $ Plot : Factor w/ 4 levels "39C16","39F11",..: 1 1 2 2 3 3 4 4 $ Lat : Factor w/ 4 levels "39.54522","39.56214",..: 4 4 3 3 2 2 1 1 $ LatCat : Factor w/ 1 level "Lat6": 1 1 1 1 1 1 1 1 $ Elevation: Factor w/ 3 levels "500","900","1500": 3 3 1 1 3 3 2 2 $ ElevCat : Factor w/ 1 level "Elev1": 1 1 1 1 1 1 1 1 $ Type : Factor w/ 1 level "Conifer": 1 1 1 1 1 1 1 1 $ SizeClass: Factor w/ 2 levels "Class3","Class4": 1 2 1 2 1 2 1 2 $ Stems : num 0 1 0 0 3 1 1 2 $ Area : Factor w/ 3 levels "694.0784","751.5347",..: 2 2 2 2 1 1 3 3 $ Density : Factor w/ 3 levels "0","13.08926",..: 1 3 1 1 1 1 2 1 #Taking out Density will group for the combinations of other factors aggregate(Stems~Plot+Data+Lat+LatCat+Elevation+Type+Area,data=dat2,sum) Plot Data Lat LatCat Elevation Type Area Stems 1 39F13 VTM 39.56214 Lat6 1500 Conifer 694.0784 4 2 39F11 VTM 39.57721 Lat6 500 Conifer 751.5347 0 3 39C16 VTM 39.76282 Lat6 1500 Conifer 751.5347 1 4 39F14 VTM 39.54522 Lat6 900 Conifer 763.985 3 #but, it won't go lower than this as there are four levels for Plot and Lat, unless you drop those aggregate(Stems~Data+LatCat+Elevation+Type,data=dat2,sum) Data LatCat Elevation Type Stems 1 VTM Lat6 500 Conifer 0 2 VTM Lat6 900 Conifer 3 3 VTM Lat6 1500 Conifer 5 A.K. ----- Original Message ----- From: Christopher R. Dolanc <crdol...@ucdavis.edu> To: arun <smartpink...@yahoo.com> Cc: Sent: Wednesday, August 8, 2012 2:00 PM Subject: Re: [R] summing and combining rows OK. I can make this work. Thank you for helping me figure this out. On 8/8/2012 10:49 AM, arun wrote: > Hello, > > I tried with ddply > > >ddply(dat1,.(Data,Plot,Lat,LatCat,Elevation,Type,Area,Density),summarize,sum(Stems)) > Data Plot Lat LatCat Elevation Type Area Density ..1 > 1 VTM 39C16 39.76282 Lat6 1500 Conifer 751.5347 0.00000 0 > 2 VTM 39C16 39.76282 Lat6 1500 Conifer 751.5347 13.30611 1 > 3 VTM 39F11 39.57721 Lat6 500 Conifer 751.5347 0.00000 0 > 4 VTM 39F13 39.56214 Lat6 1500 Conifer 694.0784 0.00000 4 > 5 VTM 39F14 39.54522 Lat6 900 Conifer 763.9850 0.00000 2 > 6 VTM 39F14 39.54522 Lat6 900 Conifer 763.9850 13.08926 1 > > > Results look same as in aggregate. > Suppose, if you take out density, > > ddply(dat1,.(Data,Plot,Lat,LatCat,Elevation,Type,Area),summarize,sum(Stems)) > Data Plot Lat LatCat Elevation Type Area ..1 > 1 VTM 39C16 39.76282 Lat6 1500 Conifer 751.5347 1 > 2 VTM 39F11 39.57721 Lat6 500 Conifer 751.5347 0 > 3 VTM 39F13 39.56214 Lat6 1500 Conifer 694.0784 4 > 4 VTM 39F14 39.54522 Lat6 900 Conifer 763.9850 3 > > I guess now it is summed. > > > > A.K. > > > > > > > ----- Original Message ----- > From: Christopher R. Dolanc <crdol...@ucdavis.edu> > To: arun <smartpink...@yahoo.com> > Cc: > Sent: Wednesday, August 8, 2012 1:19 PM > Subject: Re: [R] summing and combining rows > > ok, so it looks like aggregate lists them separately unless everything > in the 2 rows matches. Below, we have 2 plots where the density is > different in Class3 than Class4, and these are not summed. Is that your > understanding? > > Thanks for your help. > > Chris > > On 8/7/2012 4:18 PM, arun wrote: >> HI, >> >> I tried two ways in aggregate. The results are the same. >> dat1<-read.table(text=" >> Data Plot Lat LatCat Elevation ElevCat Type >>SizeClass Stems Area Density >> VTM 39C16 39.76282 Lat6 1500 Elev1 Conifer >>Class3 0 751.5347 0.00000 >> VTM 39C16 39.76282 Lat6 1500 Elev1 Conifer >>Class4 1 751.5347 13.30611 >> VTM 39F11 39.57721 Lat6 500 Elev1 Conifer >>Class3 0 751.5347 0.00000 >> VTM 39F11 39.57721 Lat6 500 Elev1 Conifer >>Class4 0 751.5347 0.00000 >> VTM 39F13 39.56214 Lat6 1500 Elev1 Conifer >>Class3 3 694.0784 0.00000 >> VTM 39F13 39.56214 Lat6 1500 Elev1 Conifer >>Class4 1 694.0784 0.00000 >> VTM 39F14 39.54522 Lat6 900 Elev1 Conifer >>Class3 1 763.9850 13.08926 >> VTM 39F14 39.54522 Lat6 900 Elev1 Conifer >>Class4 2 763.9850 0.00000 >> ",sep="",header=TRUE, stringsAsFactors=FALSE) >> >> >>> with(dat1,aggregate(Stems,list(Plot,Data,Lat,LatCat,Elevation,Type,Area,Density),sum)) >> Group.1 Group.2 Group.3 Group.4 Group.5 Group.6 Group.7 Group.8 x >> 1 39F13 VTM 39.56214 Lat6 1500 Conifer 694.0784 0.00000 4 >> 2 39F11 VTM 39.57721 Lat6 500 Conifer 751.5347 0.00000 0 >> 3 39C16 VTM 39.76282 Lat6 1500 Conifer 751.5347 0.00000 0 >> 4 39F14 VTM 39.54522 Lat6 900 Conifer 763.9850 0.00000 2 >> 5 39F14 VTM 39.54522 Lat6 900 Conifer 763.9850 13.08926 1 >> 6 39C16 VTM 39.76282 Lat6 1500 Conifer 751.5347 13.30611 1 >>> aggregate(Stems~Plot+Data+Lat+LatCat+Elevation+Type+Area+Density,data=dat1,sum) >> Plot Data Lat LatCat Elevation Type Area Density Stems >> 1 39F13 VTM 39.56214 Lat6 1500 Conifer 694.0784 0.00000 4 >> 2 39F11 VTM 39.57721 Lat6 500 Conifer 751.5347 0.00000 0 >> 3 39C16 VTM 39.76282 Lat6 1500 Conifer 751.5347 0.00000 0 >> 4 39F14 VTM 39.54522 Lat6 900 Conifer 763.9850 0.00000 2 >> 5 39F14 VTM 39.54522 Lat6 900 Conifer 763.9850 13.08926 1 >> 6 39C16 VTM 39.76282 Lat6 1500 Conifer 751.5347 13.30611 1 >> >> >> >> The rows with 39.57721 and 39.56214 are the same for SizeClass except the >> Stems #. It got summed. Otherwise, it is giving both Class3 and Class4 >> values separately. >> >> A.K. >> >> >> >> >> >> >> >> >> ----- Original Message ----- >> From: Christopher R. Dolanc <crdol...@ucdavis.edu> >> To: arun <smartpink...@yahoo.com> >> Cc: >> Sent: Tuesday, August 7, 2012 6:38 PM >> Subject: Re: [R] summing and combining rows >> >> Hmmm. It looks like it's only giving me the values for Class3, instead >> of summing, which is why I thought the "+" method might not be the >> appropriate coding. >> >> Here's the code I used: >> >>> CH_Con_Elev1SC34a<- >> aggregate(Stems~Plot+Data+Lat+LatCat+Elevation+Type+Area+Density, >> data=CH_Con_Elev1SC34, sum) >>> CH_Con_Elev1SC34b<- data.frame(CH_Con_Elev1SC34a, >> SizeClass=rep("Class34",)) >> >> If it helps, attached is a txt file with the data structure. >> >> On 8/7/2012 3:00 PM, arun wrote: >>> Hi, >>> Not sure why you mentioned "+" doesn't work. >>> dat1<-read.table(text=" >>> Plot Elevation Area SizeClass Stems >>> 12 1200 132.4 Class3 0 >>> 12 1200 132.4 Class4 1 >>> 17 2320 209.1 Class3 3 >>> 17 2320 209.1 Class4 5 >>> ",sep="",header=TRUE,stringsAsFactors=FALSE) >>> >>> dat2<-aggregate(Stems~Plot+Elevation+Area, data=dat1,sum) >>> dat3<-data.frame(dat2,SizeClass=rep("Class34",2)) >>> dat3<-dat3[,c(1:3,5,4)] >>> dat3 >>> # Plot Elevation Area SizeClass Stems >>> #1 12 1200 132.4 Class34 1 >>> #2 17 2320 209.1 Class34 8 >>> >>> A.K. >>> >>> >>> >>> >>> >>> >>> ----- Original Message ----- >>> From: Christopher R. Dolanc <crdol...@ucdavis.edu> >>> To: arun <smartpink...@yahoo.com> >>> Cc: >>> Sent: Tuesday, August 7, 2012 5:47 PM >>> Subject: Re: [R] summing and combining rows >>> >>> Thanks for your response. The aggregate method mostly works for me, but >>> I have numerous other columns that I'd like to keep in the result. So, >>> if I have something like this: >>> >>> >>> Plot Elevation Area SizeClass Stems >>> 12 1200 132.4 Class3 0 >>> 12 1200 132.4 Class4 1 >>> 17 2320 209.1 Class3 3 >>> 17 2320 209.1 Class4 5 >>> >>> How can I make it look like this? >>> >>> Plot Elevation Area SizeClass Stems >>> 12 1200 132.4 Class34 1 >>> 17 2320 209.1 Class34 8 >>> >>> I see something in ?aggregate about adding columns with a +, but this >>> doesn't quite work for me. >>> >>> >>> On 8/7/2012 2:32 PM, arun wrote: >>>> Hi, >>>> >>>> Try this: >>>> dat1<-read.table(text=" >>>> Plot SizeClass Stems >>>> 12 Class3 1 >>>> 12 Class4 3 >>>> 17 Class3 5 >>>> 17 Class4 2 >>>> ",sep="",header=TRUE, stringsAsFactors=FALSE) >>>> >>>> >>>> >>>> ddply(dat1,.(Plot), summarize, sum(Stems)) >>>> >>>> #or >>>> >>>> >>>> dat2<-aggregate(Stems~Plot,data=dat1,sum) >>>> dat3<-data.frame(dat2,SizeClass=rep("Class34",2)) >>>> dat3 >>>> # Plot Stems SizeClass >>>> #1 12 4 Class34 >>>> #2 17 7 Class34 >>>> >>>> >>>> A.K. >>>> >>>> ----- Original Message ----- >>>> From: Christopher R. Dolanc <crdol...@ucdavis.edu> >>>> To: r-help@r-project.org >>>> Cc: >>>> Sent: Tuesday, August 7, 2012 1:47 PM >>>> Subject: [R] summing and combining rows >>>> >>>> Hello, >>>> >>>> I have a data set that needs to be combined so that rows are summed by a >>>> group based on a certain variable. I'm pretty sure rowsum() or rowsums() >>>> can do this but it's difficult for me to figure out how it will work for >>>> my data based on the examples I've read. >>>> >>>> My data are structured like this: >>>> >>>> Plot SizeClass Stems >>>> 12 Class3 1 >>>> 12 Class4 3 >>>> 17 Class3 5 >>>> 17 Class4 2 >>>> >>>> I simply want to sum the size classes by plot and create a new data frame >>>> with a size class called "Class34" or with the SizeClass variable removed. >>>> I actually do have other size classes that I want to leave alone, but >>>> combine 3 and 4, so if I could figure out how to do this by creating a new >>>> class, that would be preferable. >>>> >>>> I've also attached a more detailed sample of data. >>>> >>>> Thanks, >>>> Chris Dolanc >>>> >>>> -- Christopher R. Dolanc >>>> Post-doctoral Researcher >>>> University of Montana and UC-Davis >>>> >>>> >>>> ______________________________________________ >>>> 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. >>>> >>>> -- Christopher R. Dolanc Post-doctoral Researcher University of Montana and UC-Davis ______________________________________________ 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.