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]]

______________________________________________
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