[R] Simple order() data frame question.
John Kane
jrkrideau at yahoo.ca
Thu May 12 15:09:12 CEST 2011
Argh. I knew it was at least partly obvious. I never have been able to read the order() help page and understand what it is saying.
THanks very much.
By the way, to me it is counter-intuitive that the the command is
> df1[order(df1[,2],decreasing=TRUE),]
For some reason I keep expecting it to be
order( , df1[,2],decreasing=TRUE)
So clearly I don't understand what is going on but at least I a lot better off. I may be able to get this graph to work.
--- On Thu, 5/12/11, Patrick Breheny <patrick.breheny at uky.edu> wrote:
> From: Patrick Breheny <patrick.breheny at uky.edu>
> Subject: Re: [R] Simple order() data frame question.
> To: "John Kane" <jrkrideau at yahoo.ca>
> Cc: "R R-help" <r-help at stat.math.ethz.ch>
> Received: Thursday, May 12, 2011, 8:44 AM
> 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