Hello,
Aren't the levels of your example wrong? If the levels are
levels=c('a','b','c'), not c('b', 'a', 'c'), then the following will do
the job.
unname(unlist(tapply(dat$D, dat$S, order)))
Hope this helps,
Rui Barradas
Em 04-02-2015 19:34, Tom Wright escreveu:
Given a dataframe:
dat<-data.frame(S=factor(c(rep('a',2),rep('b',1),rep('c',3)),levels=c('b','a','c')),
D=c(5,1,3,2,3,4))
where S is a subject identifier and D a visit (actually a date in my
real dataset). I would like to generate another column giving the visit
number
R=c(2,1,1,1,2,3)
My current solution uses nested loops and is slow and ugly. I've looked
at by() but can't see how to keep the order of R correct.
Thanks,
Tom
______________________________________________
[email protected] 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.
______________________________________________
[email protected] 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.