[R] Rearranging variables in table in non-alphabetical (manually specified) order

Duncan Murdoch murdoch.duncan at gmail.com
Sun May 8 18:24:11 CEST 2011


On 11-05-08 11:10 AM, André Júng wrote:
> Dear all,
>
> I'm trying to rearrange variables in a table in a custum order for using it with levelplot. So far I could only find examples showing how to sort alphabetically. Here is a short example:
>
> a<- c("Anna","Anna","Michael","Klaus","Klaus","Anna","Fritz")
>
> b<- c("Schnitzel","Pommes","Pommes","Schnitzel","Wurst","Schnitzel","Schnitzel")
> food<- matrix(c(a,b),7)
> as.data.frame(food) ->  tmp
> as.data.frame(table(tmp)) ->  X
> levelplot(X$Freq ~ X$V1 * X$V2,xlab="people",ylab="food")
>
> Food is now ordered: Pommes, Schnitzel, Wurst.
> But I need: Schnitzel, Pommes, Wurst.
>
> How can I define the order? I'm happy about every suggestion.
>

The general answer to that question is to make b into a factor with the 
levels in a specified order, e.g. by

b <- factor(b, levels=c("Schnitzel", "Pommes", "Wurst"))

However, this doesn't survive the other strange things you are doing. 
If you simplify the rest, it should be fine.  For example:

food <- data.frame(a,b)
X <- as.data.frame(table(food))
levelplot(Freq ~ a * b, data= X)

Duncan Murdoch



More information about the R-help mailing list