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