[R] Sorting data.frame and again sorting within data.frame
arun
smartpink111 at yahoo.com
Mon Apr 15 15:04:09 CEST 2013
You can also use:
df[order(df$names,-xtfrm(df$dates),decreasing=FALSE),]
# names dates values
#3 A 4/15/2013 31
#7 A 4/14/2013 102
#2 A 4/13/2013 31
#6 B 4/15/2013 34
#8 B 4/14/2013 47
#4 B 4/13/2013 17
#1 C 4/15/2013 10
#9 C 4/14/2013 29
#5 C 4/13/2013 11
A.K.
----- Original Message -----
From: arun <smartpink111 at yahoo.com>
To: Katherine Gobin <katherine_gobin at yahoo.com>
Cc: R help <r-help at r-project.org>
Sent: Monday, April 15, 2013 8:57 AM
Subject: Re: [R] Sorting data.frame and again sorting within data.frame
library(plyr)
arrange(df,names,desc(dates))
# names dates values
#1 A 4/15/2013 31
#2 A 4/14/2013 102
#3 A 4/13/2013 31
#4 B 4/15/2013 34
#5 B 4/14/2013 47
#6 B 4/13/2013 17
#7 C 4/15/2013 10
#8 C 4/14/2013 29
#9 C 4/13/2013 11
#or
df[with(df,order(names,desc(dates))),]
# names dates values
#3 A 4/15/2013 31
#7 A 4/14/2013 102
#2 A 4/13/2013 31
#6 B 4/15/2013 34
#8 B 4/14/2013 47
#4 B 4/13/2013 17
#1 C 4/15/2013 10
#9 C 4/14/2013 29
#5 C 4/13/2013 11
A.K.
----- Original Message -----
From: Katherine Gobin <katherine_gobin at yahoo.com>
To: r-help at r-project.org
Cc:
Sent: Monday, April 15, 2013 2:01 AM
Subject: [R] Sorting data.frame and again sorting within data.frame
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