Milton Cezar Ribeiro
2007-Apr-02 02:27 UTC
[R] Res: Create a new var reflecting the order of subjects in existing var
Um texto embutido e sem conjunto de caracteres especificado associado... Nome: n?o dispon?vel Url: https://stat.ethz.ch/pipermail/r-help/attachments/20070401/68a57089/attachment.pl
Nguyen Dinh Nguyen
2007-Apr-02 06:51 UTC
[R] Create a new var reflecting the order of subjects in existing var
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]]
Possibly Parallel Threads
- Create a new var reflecting the order of subjects in existing var
- Behavior of seq_along (was: Create a new var reflecting the order of subjects in existing var)
- Reflecting on associations
- random walk w/ reflecting boundary: avoid control construct?
- Re: Reg: content of disk is not reflecting in host.