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

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Mon Apr 15 09:40:26 CEST 2013


The examples in ?order show a method that could be applied if you avoid the decreasing argument and instead convert the Date to numeric for purposes of sorting.
---------------------------------------------------------------------------
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.

Katherine Gobin <katherine_gobin at yahoo.com> 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
>
>names������� dates������� values
>A����������� 4/15/2013����� 31
>A����������� 4/14/2013���� 102
>A����������� 4/13/2013����� 31
>B����������� 4/15/2013�����
> 34
>B����������� 4/14/2013����� 47
>B����������� 4/13/2013����� 17
>C����������� 4/15/2013����� 10
>C����������� 4/14/2013����� 29
>C����������� 4/13/2013����� 11
>
>I tried
>
>df_sorted = df[order(df$names, (as.Date(df$dates, "%m/%d/%Y")),
>decreasing = TRUE),]
>
>> df_sorted
>� names���� dates values
>1���� C 4/15/2013���� 10
>9���� C 4/14/2013���� 29
>5���� C 4/13/2013����
> 11
>6���� B 4/15/2013���� 34
>8���� B 4/14/2013���� 47
>4���� B 4/13/2013���� 17
>3���� A 4/15/2013���� 31
>7���� A 4/14/2013��� 102
>2���� A 4/13/2013���� 31
>
>
>I need A to appear first with all three corresponding dates in
>decreasing order, then B and so on.
>
>Please guide.
>
>With regards
>
>Katherine
>
>
>	[[alternative HTML version deleted]]
>
>
>
>------------------------------------------------------------------------
>
>______________________________________________
>R-help at r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list