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.

Reply via email to