Hi eric,

Try

lapply(with(x, split(x, e2)), function(l){
r <- with(l, aggregate(list(y, f), list(e1), sum))
colnames(r) <- c('e1', 'y', 'f')
 r
   })

HTH,
Jorge


On Sun, Aug 14, 2011 at 1:20 PM, eric <> wrote:

> I have a data frame called test shown below that i would like to summarize
> in
> a particular way :
>
> I want to show the column sums (columns y ,f) grouped by country (column
> e1). However, I'm looking for the data to be split according to column e2.
> In other words, two tables of sum by country. One table for "con" and one
> table for "std" shown in column e2. Finally at the bottom of the two
> tables,
> I would like the overall sum /Totals for all the countries for the two
> columns (y,f).  The lay outs for the two tables I'm looking for are also
> shown below in case my description isn't completely clear
>
> I would also like to be able to use the Totals of y and f for the two
> tables
> in other calculations.
>
> I can get the two sets of totals with the following commands but not the
> sums by country.
>
> colSums(test[test$e2=="std", c(3,4)])
> colSums(test[test$e2=="con", c(3,4)])
>
> I know there's an easy way to do this with a combination of colSums, by,
> aggregate but I can't seem to get it.
>
> std         y       f
>
> usa        sum   sum
> france    sum   sum
> can        sum   sum
> italy       sum   sum
> Totals    sum   sum
>
> con       y       f
>
> usa       sum   sum
> france   sum   sum
> can       sum   sum
> italy      sum   sum
> Totals    sum   sum
>
>      e1  e2 y  f
> 1     usa std 1  1
> 2     usa std 1  2
> 3     can con 1  3
> 4  france con 1  4
> 5     can std 1  5
> 6   italy con 1  6
> 7     usa std 2  7
> 8     usa std 2  8
> 9     can con 2  9
> 10 france con 2 10
> 11    can std 2 11
> 12  italy con 2 12
> 13    usa std 3 13
> 14    usa std 3 14
> 15    can con 3 15
> 16 france con 3 16
> 17    can std 3 17
> 18  italy con 3 18
> 19    usa std 4 19
> 20    usa std 4 20
> 21    can con 4 21
> 22 france con 4 22
> 23    can std 4 23
> 24  italy con 4 24
> 25    usa std 5 25
> 26    usa std 5 26
> 27    can con 5 27
> 28 france con 5 28
> 29    can std 5 29
> 30  italy con 5 30
> 31    usa std 6 31
> 32    usa std 6 32
> 33    can con 6 33
> 34 france con 6 34
> 35    can std 6 35
> 36  italy con 6 36
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/Not-sure-how-to-use-aggregate-colSums-by-tp3743258p3743258.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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]]

