[R] sorting a data.frame (df) by a vector (which is not contained in the df) - unexpected behaviour of match and factor

Berend Hasselman bhh at xs4all.nl
Thu Dec 29 11:24:50 CET 2011


drflxms wrote
> 
> Jeff,
> 
> thanks a lot for your quick reply and the hint!
> 
> Meanwhile I found a solution that works - at least for my case ;)
> The code to get the job done is
> 
> df[order(match(df$level,desiredOrder)),]
> 
> So we seem in need of one order statement more. I found this solution
> doing it stepwise:
> 
> ## sorting the levels of the level column in the data.frame
> df$level <- factor(df$level,levels=desiredOrder)
> ## sorting the data frame by the newly sorted level column
> df[order(df$level),]
> 
> Maybe this solution is of a help for someone else as well?
> 
> But honestly I still do not exactly understand why
> df[match(df$level,desiredOrder),] doesn't work...
> 

Read carefully

?match

and  then do

match(df$level,desiredOrder)
match(desiredOrder,df$level)

and look carefully at the results. Then it should be clear.

Berend



--
View this message in context: http://r.789695.n4.nabble.com/sorting-a-data-frame-df-by-a-vector-which-is-not-contained-in-the-df-unexpected-behaviour-of-match-ar-tp4242326p4242400.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list