Hi,
I meant that your problem occured because the levels of mylevels are not
ordered whereas tapply uses the ordered levels for printing. If you
order them (look under), you can see the results of the tapply has the
same order as the levels of myfactor
>mydata<-c("IN0020020155","IN0019800021","IN0020020064","IN0020020155","IN0019800021","IN0019800021","IN0020020064","IN0020020064","IN0019800021")
> mylevels<-c("IN0020020155","IN0019800021","IN0020020064")
> myfactor<-factor(mydata,levels=mylevels)
> myfactor
[1] IN0020020155 IN0019800021 IN0020020064 IN0020020155 IN0019800021
[6] IN0019800021 IN0020020064 IN0020020064 IN0019800021
Levels: IN0020020155 IN0019800021 IN0020020064
> levels(myfactor) <- sort(mylevels)
> myfactor
[1] IN0019800021 IN0020020064 IN0020020155 IN0019800021 IN0020020064
[6] IN0020020064 IN0020020155 IN0020020155 IN0020020064
Levels: IN0019800021 IN0020020064 IN0020020155
> tapply(myfactor,mydata,length)
IN0019800021 IN0020020064 IN0020020155
4 3 2
Chirantan Kundu wrote:
Hi Alain,
I tried levels(myfactor) as you suggested.
> levels(myfactor)
[1] "IN0020020155" "IN0019800021" "IN0020020064"
The order is preserved, no alphanumerical sorting done here.
Regards.
On Wed, May 6, 2009 at 7:35 PM, Alain Guillet
<alain.guil...@uclouvain.be <mailto:alain.guil...@uclouvain.be>> wrote:
Hi,
I don't believe the problem is related to tapply. I would say it
is because of the factor. In fact, the order of a factor is given
by the alphanumerical order of his levels. You can see it with
levels(myfactor).
I you want to change the order, redefine the levels of myfactor
with the expected order or use the function ordered.
Alain
Chirantan Kundu wrote:
Hi,
Does tapply change the order when applied on a factor? Below
is the code I
tried.
mylevels<-c("IN0020020155","IN0019800021","IN0020020064")
mydata<-c("IN0020020155","IN0019800021","IN0020020064","IN0020020155","IN0019800021","IN0019800021","IN0020020064","IN0020020064","IN0019800021")
myfactor<-factor(mydata,levels=mylevels)
myfactor
[1] IN0020020155 IN0019800021 IN0020020064 IN0020020155
IN0019800021
IN0019800021 IN0020020064 IN0020020064 IN0019800021
Levels: IN0020020155 IN0019800021 IN0020020064
summary(myfactor)
IN0020020155 IN0019800021 IN0020020064
2 4 3
# Everything fine upto this point. The order of levels is
maintained as it
is.
mysummary<-tapply(myfactor,mydata,length)
mysummary
IN0019800021 IN0020020064 IN0020020155
4 3 2
# Now the order has changed.
Is this the expected behavior? Any idea on how to avoid the
change in order?
Regards,
Chirantan
____________________________________
Visit us at http://www.2pirad.com
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org <mailto:R-help@r-project.org> 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.
--
Alain Guillet
Statistician and Computer Scientist
SMCS - Institut de statistique - Université catholique de Louvain
Bureau d.126
Voie du Roman Pays, 20
B-1348 Louvain-la-Neuve
Belgium
tel: +32 10 47 30 50
____________________________________
Visit us at http://www.2pirad.com
--
Alain Guillet
Statistician and Computer Scientist
SMCS - Institut de statistique - Université catholique de Louvain
Bureau d.126
Voie du Roman Pays, 20
B-1348 Louvain-la-Neuve
Belgium
tel: +32 10 47 30 50
______________________________________________
R-help@r-project.org 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.