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.