Another possibility is to transpose and use functions that assume the grouping 
is by rows, such as summaryBy in the doBy library. If you can easily work with 
your data this way, the code might be more clear.

> library ( doBy )
> databyrows <- rbind ( c ( 2, 2, 3, 4, 4, 4, 5, 5, 6), c(1, 1, 2, 1, 3, 3, 2, 
> 1, 1) )
> databyrows
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    2    2    3    4    4    4    5    5    6
[2,]    1    1    2    1    3    3    2    1    1
> databycols <- t ( databyrows)
> colnames ( databycols ) <- c("x", "y")
> databycols.df <- data.frame (databycols)
> # (summaryBy needs a data frame)
> # The FUN argument is set explicitly to its default for clarity.
> databycols.df
  x y
1 2 1
2 2 1
3 3 2
4 4 1
5 4 3
6 4 3
7 5 2
8 5 1
9 6 1
> sumbycols.df <- summaryBy ( y ~ x, data = databycols.df , FUN = sum, 
> keep.names = TRUE )
> sumbycols.df
  x y
1 2 2
2 3 2
3 4 7
4 5 3
5 6 1
> sumbyrows.df <- t ( sumbycols.df )
> sumbyrows.df
  1 2 3 4 5
x 2 3 4 5 6
y 2 2 7 3 1
> 

----- Original message -----
From: "Eik Vettorazzi" <e.vettora...@uke.uni-hamburg.de>
To: "Hans-Henning Gabriel" <hanshenning.gabr...@gmail.com>
Cc: r-help@r-project.org
Date: Tue, 07 Apr 2009 17:36:45 +0200
Subject: Re: [R] group by-like statement for 2-row matrix

see ?aggregate

m<-rbind(sample(2:6,9,replace=T),sample(1:3,9,replace=T))
aggregate(m[2,],by=list(m[1,]),sum)

Hans-Henning Gabriel schrieb:
> Hi,
>
> my problem is as follows:
>
> I have a matrix of two rows like this:
>
> 2 2 3 4 4 4 5 5 6
> 1 1 2 1 3 3 2 1 1
>
> Can I apply something like "group by" in sql? What I want to achieve 
> is the some of second row for each unique entry of first row:
>
> 2 -> 2 (=1+1)
> 3 -> 2
> 4 -> 7 (=1+3+3)
> 5 -> 3 (=2+1)
> 6 -> 1
>
> Thanks!!
> Henning
>
> ______________________________________________
> 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.

-- 
Eik Vettorazzi
Institut für Medizinische Biometrie und Epidemiologie
Universitätsklinikum Hamburg-Eppendorf

Martinistr. 52
20246 Hamburg

T ++49/40/42803-8243
F ++49/40/42803-7790

______________________________________________
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.

Reply via email to