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.