[R] Re-ordering factors
James Reilly
reilly at stat.auckland.ac.nz
Sun Oct 7 06:14:45 CEST 2007
Using reorder.factor from the stats package seems to work:
educ$ed <- reorder(educ$Education, sort(rep(1:4,5)))
levels(educ$Education)
[1] "CompletedHS" "IncompleteHS" "Uni1-3" "Uni4+"
levels(educ$ed)
[1] "IncompleteHS" "CompletedHS" "Uni1-3" "Uni4+"
xtabs(Count ~ ed + Age_Group, data=educ)
Age_Group
ed 25-34 35-44 45-54 55-64 >64
IncompleteHS 5416 5030 5777 7606 13746
CompletedHS 16431 1855 9435 8795 7558
Uni1-3 8555 5576 3124 2524 2503
Uni4+ 9771 7596 3904 3109 2483
James
On 7/10/07 4:52 PM, maj at stats.waikato.ac.nz wrote:
> A small example before I begin my query:
>
>> educ <- read.table(efile, header=TRUE)
>> educ
> Education Age_Group Count
> 1 IncompleteHS 25-34 5416
> 2 IncompleteHS 35-44 5030
> 3 IncompleteHS 45-54 5777
> 4 IncompleteHS 55-64 7606
> 5 IncompleteHS >64 13746
> 6 CompletedHS 25-34 16431
> 7 CompletedHS 35-44 1855
> 8 CompletedHS 45-54 9435
> 9 CompletedHS 55-64 8795
> 10 CompletedHS >64 7558
> 11 Uni1-3 25-34 8555
> 12 Uni1-3 35-44 5576
> 13 Uni1-3 45-54 3124
> 14 Uni1-3 55-64 2524
> 15 Uni1-3 >64 2503
> 16 Uni4+ 25-34 9771
> 17 Uni4+ 35-44 7596
> 18 Uni4+ 45-54 3904
> 19 Uni4+ 55-64 3109
> 20 Uni4+ >64 2483
>> xtabs(Count ~ Education + Age_Group, data=educ)
> Age_Group
> Education >64 25-34 35-44 45-54 55-64
> CompletedHS 7558 16431 1855 9435 8795
> IncompleteHS 13746 5416 5030 5777 7606
> Uni1-3 2503 8555 5576 3124 2524
> Uni4+ 2483 9771 7596 3904 3109
>
> Naturally I would prefer the factor levels in their natural ordering in
> the table. I would like to re-order the levels of the factors to achieve
> this.
>
> I have tried reorder() in the gdata package:
>
>> ed <- reorder(Education,neworder= c("IncompleteHS","CompletedHS",
> + "Uni1-3","Uni4+"))
>> agrp <- reorder(Age_Group,neworder=
> + c("25-34","35-44","45-54","55-64",">64"))
>> xtabs(Count ~ ed + agrp)
> agrp
> ed 25-34 35-44 45-54 55-64 >64
> CompletedHS 16431 1855 9435 8795 7558
> IncompleteHS 5416 5030 5777 7606 13746
> Uni1-3 8555 5576 3124 2524 2503
> Uni4+ 9771 7596 3904 3109 2483
>
> which works on one factor but not the other.
>
> I have fooled a bit with reorder.factor() but I can't seem to figure out
> how to drive it!
>
> Cheers, Murray Jorgensen
--
James Reilly
Department of Statistics, University of Auckland
Private Bag 92019, Auckland, New Zealand
More information about the R-help
mailing list