[R] Simple order() data frame question.

Patrick Breheny patrick.breheny at uky.edu
Thu May 12 14:44:07 CEST 2011


On 05/12/2011 08:32 AM, John Kane wrote:
> Clearly, I don't understand what order() is doing and as ususl the help for order seems to only confuse me more. For some reason I just don't follow the examples there. I must be missing something about the data frame sort there but what?
>
> I originally wanted to  reverse-order my data frame df1 (see below) by aa (a factor) but since this was not working I decided to simplify and order by bb to see what was haqppening!!
>
> I'm obviously doing something stupid but what?
>
> (df1<- data.frame(aa=letters[1:10],
>       bb=rnorm(10)))
> # Order in acending order by bb
> (df1[order(df1[,2]),] ) # seems to work fine
>
> # Order in decending order by bb.
> (df1[order(df1[,-2]),])  # does not seem to work
>

There is a 'decreasing' option described in the help file for 'order' 
which does what you want:

df1<- data.frame(aa=letters[1:10],bb=rnorm(10))
df1[order(df1[,2],decreasing=TRUE),]

    aa          bb
6   f  3.16449690
7   g  2.44362935
8   h  0.80990322
1   a  0.06365513
5   e -0.33932586
9   i -0.52119533
2   b -0.65623164
4   d -0.86918700
3   c -1.86750927
10  j -2.21178676

df1[order(df1[,1],decreasing=TRUE),]

    aa          bb
10  j -2.21178676
9   i -0.52119533
8   h  0.80990322
7   g  2.44362935
6   f  3.16449690
5   e -0.33932586
4   d -0.86918700
3   c -1.86750927
2   b -0.65623164
1   a  0.06365513

The expression 'df1[,-2]' removes the second column from df1; clearly 
not what you want here.

-- 
Patrick Breheny
Assistant Professor
Department of Biostatistics
Department of Statistics
University of Kentucky



More information about the R-help mailing list