Dear R users,

Followings are summary the solutions for my question.
All the way to Roma! 

But vote #1 for Jim, the simplest solution.

Thank you all of you for yours quick response

Regards

Nguyen

 

# I have a data set sth like this:

 

set.seed(123);dat <- data.frame(ID= c(rep(1,2),rep(2,3), rep(3,3), rep(4,4),
rep(5,5)),

                  var1 =rnorm(17, 35,2),

                  var2=runif(17,0,1))

 

# I would like to create a new var in dat which reflects the order of each
subject (ID), like this

#   ID     var1       var2     IDorder

# 1   1 33.87905 0.02461368       1

# 2   1 34.53965 0.47779597       2

# 3   2 38.11742 0.75845954       1

# 4   2 35.14102 0.21640794       2

# 5   2 35.25858 0.31818101       3

# 6   3 38.43013 0.23162579       1

# 7   3 35.92183 0.14280002       2

# 8   3 32.46988 0.41454634       3

# 9   4 33.62629 0.41372433       1

# 10  4 34.10868 0.36884545       2

# 11  4 37.44816 0.15244475       3

# 12  4 35.71963 0.13880606       4

# 13  5 35.80154 0.23303410       1

# 14  5 35.22137 0.46596245       2

# 15  5 33.88832 0.26597264       3

# 16  5 38.57383 0.85782772       4

# 17  5 35.99570 0.04583117       5

 

 

##SOLUTIONS

 

# 1st (by Christos Hatzis)

y <- rle(dat$ID) # rle: Run Length Endcoding

dat$IDorder1 <- unlist(sapply(y$lengths, FUN=function(x) seq(1,x)))

dat

 

# 2st (by Chaliraos Skiadas)

dat$IDorder2 <- unlist(tapply(dat$ID,factor(dat$ID), function(x)

1:length(x)),use.names=FALSE)

dat

 

#3rd (Jim Holtman)

dat$IDorder3 <- ave(dat$ID, dat$ID, FUN=seq)

 

#4 (Gabor Grothendieck)   Assuming the ID's are contiguous

dat <- transform(dat, IDorder3 = seq(ID) - match(ID, ID) + 1)

dat

 

#5th   (Milton Cezar Ribeiro)

ID.freq<-table(dat$ID)

ID.freq

ID.seq<-NULL

for (i in names(ID.freq))

 {

 ID.seq<-c(ID.seq,seq(from=1, to=ID.freq[i], by=1))

 }

dat$ID.seq<-ID.seq

dat

# END


        [[alternative HTML version deleted]]

______________________________________________
[email protected] 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.

Reply via email to