Thank you gentlemen,

all three solutions are working and very insightful.

Your help and time is very much appreciated.

Alexander

On Tue, Mar 2, 2010 at 1:08 PM, Felipe Carrillo <mazatlanmex...@yahoo.com>wrote:

> Like this?
>
> group<- c(1,1,1,1,2,2,2,2,2,3,3,3,3,3,3)
> var2<- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
> data<-data.frame(group, var2)
> data
> ddply(data,"group",transform,ID=1:length(group))
>
> Felipe D. Carrillo
> Supervisory Fishery Biologist
> Department of the Interior
> US Fish & Wildlife Service
> California, USA
>
>
>
> ----- Original Message ----
> > From: Alexander Schwall <alexander.schw...@gmail.com>
> > To: r-help@r-project.org
> > Sent: Tue, March 2, 2010 9:53:19 AM
> > Subject: [R] adding row ID numbers by group
> >
> > Hello R community,
>
> I am hoping for some help with the following
> > problem.
>
> I have a data frame containing various groups. These groups are
> > identified
> by a grouping variable. I would like to add a sequential ID number
> > to each
> group to later sort these individuals within each group by this ID
> > number.
>
> Here is what the final result should look like:
>
> ID
> > group var2
> 1      1    1
> 2
> > 1    2
> 3      1    3
> 4
> >   1    4
> 1      2    5
> 2
> >     2    6
> 3      2
> > 7
> 4      2    8
> 5      2
> >   9
> 1      3  10
> 2      3
> > 11
> 3      3  12
> 4      3
> > 13
> 5      3  14
>
>
> I have created the following
> > code to loop through this and compare a given
> row with the following row for
> > the grouping variable. If a given row would
> be different from the then
> > following row, the ID number would be reset and I
> would start counting up
> > again. The problem that I am encountering that at
> the bottom of the data
> > frame the if statement runs out of a condition
> against which to compare the
> > last row.
>
> Here is what I did:
>
> group<-
> > c(1,1,1,1,2,2,2,2,2,3,3,3,3,3,3)
> var2<-
> > c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
>
> data<-data.frame(group,
> > var2)
> data
>
> #IDN is the desired ID number by group
> IDN
> > <-numeric(length(test$var2))
> IDN
>
>
> for (i in
> > 1:(length(data$group))) {
>       if(data[i,1] <
> > (length(data$group))){
>           if(data[i,1] ==
> > data[i+1,1]){
>               IDN[i]<-
> > sum(IDN[i-1],1)}
>           else{
>
> >           IDN[i]<- -55} #for now an arbitrary
> > value
>       }
>       if(data[i,1] ==
> > (length(data$group))) {
>           IDN[i] <- 99
> > #for now an arbitrary value
>       }
>
> > }
>
> IDN
>
>
>
> Is there maybe an easier way to do this? Any
> > thoughts would be very
> appreciated since I am running out of
> > ideas.
>
> Thanks
> Alexander
>
>     [[alternative HTML
> > version deleted]]
>
> ______________________________________________
> > ymailto="mailto:R-help@r-project.org";
> > href="mailto:R-help@r-project.org";>R-help@r-project.org mailing list
> > href="https://stat.ethz.ch/mailman/listinfo/r-help"; target=_blank
> > >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]]

______________________________________________
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