Whoa! 1. First and most important, there is very likely no reason you need to do this. R can handle multiple groupings automatically in fitting and plotting without creating artificial labels of the sort you appear to want to create. Please read an "Intro to R" and/or get help to see how.
2. The "solution" offered below is unnecessarily convoluted. Here is a simpler and faster one: z <- within(z, indx <- as.numeric(interaction(Dates,Groups, drop=TRUE, lex.order=TRUE))) Explanation: interaction() produces all possible combinations the individual groupings; drop=FALSE throws away any unused combinations, lex.order-TRUE lexicographically orders the levels as you indicated. ?interaction for details. By default, the result of the above is a factor, which as.numeric() converts to the numeric codes used in factor representations. ?factor . Finally, within() interprets and makes changes within z. The changed result is then assigned back to z so that it is not lost. ?within Cheers, Bert On Tue, Aug 2, 2011 at 8:36 AM, David L Carlson <dcarl...@tamu.edu> wrote: > How about this? > >> indx <- unique(cbind(Dates, Groups)) >> indx > Dates Groups > [1,] "12/10/2010" "A" > [2,] "12/10/2010" "B" > [3,] "13/10/2010" "A" > [4,] "13/10/2010" "B" > [5,] "13/10/2010" "C" > >> indx <- data.frame(indx, id=1:nrow(indx)) >> indx > Dates Groups id > 1 12/10/2010 A 1 > 2 12/10/2010 B 2 > 3 13/10/2010 A 3 > 4 13/10/2010 B 4 > 5 13/10/2010 C 5 > >> newdata <- merge(data, indx) >> newdata > Dates Groups id > 1 12/10/2010 A 1 > 2 12/10/2010 B 2 > 3 12/10/2010 B 2 > 4 13/10/2010 A 3 > 5 13/10/2010 B 4 > 6 13/10/2010 C 5 > > ---------------------------------------------- > David L Carlson > Associate Professor of Anthropology > Texas A&M University > College Station, TX 77843-4352 > > > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf Of Chandra Salgado Kent > Sent: Tuesday, August 02, 2011 2:12 AM > To: r-help@r-project.org > Subject: [R] Loops to assign a unique ID to a column > > Dear R help, > > > > I am fairly new in data management and programming in R, and am trying to > write what is probably a simple loop, but am not having any luck. I have a > dataframe with something like the following (but much bigger): > > > > Dates<-c("12/10/2010","12/10/2010","12/10/2010","13/10/2010", "13/10/2010", > "13/10/2010") > > Groups<-c("A","B","B","A","B","C") > > data<-data.frame(Dates, Groups) > > > > I would like to create a new column in the dataframe, and give each distinct > date by group a unique identifying number starting with 1, so that the > resulting column would look something like: > > > > ID<-c(1,2,2,3,4,5) > > > > The loop that I have started to write is something like this (but doesn't > work!): > > > > data$ID<-as.number(c()) > > for(i in unique(data$Dates)){ > > for(j in unique(data$Groups)){ data$ID[i,j]<-i > > i<-i+1 > > } > > } > > > > Am I on the right track? > > > > Any help on this is much appreciated! > > > > Chandra > > > [[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. > > ______________________________________________ > 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. > -- "Men by nature long to get on to the ultimate truths, and will often be impatient with elementary studies or fight shy of them. If it were possible to reach the ultimate truths without the elementary studies usually prefixed to them, these would not be preparatory studies but superfluous diversions." -- Maimonides (1135-1204) Bert Gunter Genentech Nonclinical Biostatistics ______________________________________________ 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.