Here is an implementation. > t <- > data.frame(x=c(1,1,1,1,1,2,2,2,2,2),y=c("a","a","a","b","b","a","a","b","b","b")) > t x y 1 1 a 2 1 a 3 1 a 4 1 b 5 1 b 6 2 a 7 2 a 8 2 b 9 2 b 10 2 b > assignSeq function(test) { temp <- test[order(test$x),] InC <- numeric(length(test)) inD <- unique(test$x) countAll <- 0 for (i in 1:length(inD)) { countA <- 0 countB <- 0 for (j in 1:dim(temp[temp$x==inD[i],])[1]) { countAll <- countAll + 1 if (temp$y[countAll] == "a") { InC[countAll] <- 2*countA countA <- countA + 1 } else { InC[countAll] <- 2*countB + 1 countB <- countB + 1 } } } temp$seq <- InC return(temp) } > d <- assignSeq(t) > d[order(d$x,d$seq),-3] x y 1 1 a 4 1 b 2 1 a 5 1 b 3 1 a 6 2 a 8 2 b 7 2 a 9 2 b 10 2 b
-- View this message in context: http://r.789695.n4.nabble.com/Sorting-data-frame-by-prepared-order-tp4704038p4704092.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.