Here are a couple more options if you want some variety: > d <- c(8,7,5,5,3,3,2,1,1,1) > as.numeric( factor(d, levels=unique(d)) ) [1] 1 2 3 3 4 4 5 6 6 6 > cumsum( !duplicated(d) ) [1] 1 2 3 3 4 4 5 6 6 6
What would you want the output to be if your d vector had another 8 after the last 1? The different solutions will give different output. On Wed, Mar 12, 2014 at 3:13 AM, T Bal <studentt...@gmail.com> wrote: > Hi, > I have the following numbers: > > d <- c(8,7,5,5,3,3,2,1,1,1) > > I want to convert these into the following numbers: > > r: > 1,2,3,3,4,4,5,6,6,6 > > So if two numbers are different increment it if they are same then assign > the same number: > > r <- NULL > > for (i in 1:length(d)) { > > if (d[i] != d[i+1]) { > r[i] =i+1; > } > else { > r[i] = i; > } > } > > But this is not correct. How can I solve this problem? or how can I solve > it in a different way? Thanks a lot! > > [[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. -- Gregory (Greg) L. Snow Ph.D. 538...@gmail.com ______________________________________________ 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.