[R] Sorting data.frame and again sorting within data.frame

David Winsemius dwinsemius at comcast.net
Mon Apr 15 19:19:08 CEST 2013


On Apr 15, 2013, at 9:33 AM, Jeff Newmiller wrote:

> Yes, that would be because she converted to Date on the fly in her example, and so apparently did not need this reminder.

I apologize, Iobviously  missed that. So the answer was simply to put a minus sign in front of the as.Date() expression. And that was what you were hoping she would see when she looked at the second and third examples help page that even had helpful comments.  As you suggested:

df_sorted = df[order(df$names, -as.numeric( as.Date(df$dates, "%m/%d/%Y") ), ]


-- 
David

---------------------------------------------------------------------------
> 
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
>                                      Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> --------------------------------------------------------------------------- 
> Sent from my phone. Please excuse my brevity.
> 
> David Winsemius <dwinsemius at comcast.net> wrote:
> 
>> 
>> On Apr 14, 2013, at 11:01 PM, Katherine Gobin wrote:
>> 
>>> Dear R forum,
>>> 
>>> I have a data.frame as defied below - 
>>> 
>>> df = data.frame(names = c("C", "A", "A", "B", "C", "B", "A", "B",
>> "C"), dates = c("4/15/2013", "4/13/2013", "4/15/2013", "4/13/2013",
>> "4/13/2013", "4/15/2013", "4/14/2013", "4/14/2013","4/14/2013" ),values
>> = c(10, 31, 31, 17, 11, 34, 102, 47, 29))
>>> 
>>>> df
>>>  names     dates values
>>> 1     C 4/15/2013     10
>>> 2     A 4/13/2013     31
>>> 3     A 4/15/2013     31
>>> 4     B 4/13/2013     17
>>> 5     C 4/13/2013     11
>>> 6     B
>>> 4/15/2013     34
>>> 7     A 4/14/2013    102
>>> 8     B 4/14/2013     47
>>> 9     C 4/14/2013     29
>>> 
>>> I need to sort df first on "names" in increasing order and then
>> further on "dates" in a decreasing order i.e. I need
>>> 
>> 
>> So far no one has pointed out that these are not really "Dates" in the
>> R sense and will not sort correctly if any of the proposed methods are
>> applied to sequences that extend beyond6 months, i.e, until October
>> forward. You would be advised to convert to real Date-classed
>> variables.
>> 
>> ?strptime
>> ?as.Date
> 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list