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.

Reply via email to