[R] Sorting a data frame by specifying a vector

Sarah Goslee sarah.goslee at gmail.com
Thu Oct 11 20:29:51 CEST 2012


I'm pretty sure you were already given the answer: order() in
conjunction with a factor with the level in an order you specify.


mydf$Season <- factor(mydf$Season, levels=c("Summer","Fall","Winter","Spring"))

mydf[order(mydf$Season),]

Thanks for making sure to include the context in your replies.

Sarah

On Thu, Oct 11, 2012 at 1:42 PM, ROLL Josh F <JRoll at lcog.org> wrote:
> Sorry if I wasn't clear but the result I am looking for is as follows
> #   Season       Obs
> #1  Summer 0.2141001
> #5  Summer 0.2141001
> #9  Summer 0.2141001
> #13 Summer 0.2141001
> #3    Fall 0.6722337
> #7    Fall 0.6722337
> #11   Fall 0.6722337
> #15   Fall 0.6722337
> #2  Winter 0.9318599
> #6  Winter 0.9318599
> #10 Winter 0.9318599
> #14 Winter 0.9318599
> #4  Spring 0.1927715
> #8  Spring 0.1927715
> #12 Spring 0.1927715
> #16 Spring 0.1927715
>
> The process you describe does not get me there
>
> Any other recommendations?
>
> -----Original Message-----
> From: arun [mailto:smartpink111 at yahoo.com]
> Sent: Thursday, October 11, 2012 10:33 AM
> To: ROLL Josh F
> Cc: R help
> Subject: Re: [R] Sorting a data frame by specifying a vector
>
> Hi,
> In your dataset, it seems like it is already ordered in the way you wanted to.
> df.. <- data.frame(Season=rep(c("Summer","Fall","Winter","Spring"),4),Obs=
> runif(length(rep(c("Summer","Fall","Winter","Spring"),4))))
>
> #Suppose the order you want is:
>
>  vec2<-c("Summer","Winter","Fall","Spring")
> df1<-df..[match(df..$Season,vec2),]
>  row.names(df1)<-1:nrow(df1)
>  df1
> #   Season       Obs
> #1  Summer 0.2141001
> #2  Winter 0.9318599
> #3    Fall 0.6722337
> #4  Spring 0.1927715
> #5  Summer 0.2141001
> #6  Winter 0.9318599
> #7    Fall 0.6722337
> #8  Spring 0.1927715
> #9  Summer 0.2141001
> #10 Winter 0.9318599
> #11   Fall 0.6722337
> #12 Spring 0.1927715
> #13 Summer 0.2141001
> #14 Winter 0.9318599
> #15   Fall 0.6722337
> #16 Spring 0.1927715
>
>
> A.K.
>
> ----- Original Message -----
> From: LCOG1 <jroll at lcog.org>
> To: r-help at r-project.org
> Cc:
> Sent: Thursday, October 11, 2012 1:08 PM
> Subject: [R] Sorting a data frame by specifying a vector
>
> Hello all,
>    I cannot seem to figure out this seemingly simple procedure.
>
> I want to sort a data frame by a specified character vector.
>
> So for :
>
> df.. <- data.frame(Season=rep(c("Summer","Fall","Winter","Spring"),4),Obs=
> runif(length(rep(c("Summer","Fall","Winter","Spring"),4))))
>
> I want to sort the data frame by the seasons but in the order I specify since alphapetically would not put the season in sequential order
>
> I tried the following and a few other things but no dice.  It looks like I will have to convert to factors.  Any thoughts?  Thanks
>
> df.. <-
> df..[sort(as.factor(Df..$Season,levels=c("Summer","Fall","Winter","Spring"))),]
>
> Josh
>
>
>
-- 
Sarah Goslee
http://www.functionaldiversity.org




More information about the R-help mailing list