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),Obsrunif(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 -- View this message in context: http://r.789695.n4.nabble.com/Sorting-a-data-frame-by-specifying-a-vector-tp4645867.html Sent from the R help mailing list archive at Nabble.com.
?order df[order(yourcolumn, ] -- Bert On Thu, Oct 11, 2012 at 10:08 AM, LCOG1 <jroll at lcog.org> wrote:> 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 > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Sorting-a-data-frame-by-specifying-a-vector-tp4645867.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.-- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
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),Obsrunif(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),Obsrunif(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 -- View this message in context: http://r.789695.n4.nabble.com/Sorting-a-data-frame-by-specifying-a-vector-tp4645867.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.
On Thu, Oct 11, 2012 at 10:43 AM, ROLL Josh F <JRoll at lcog.org> wrote:> Sorry if I wasn't clear.Actually, my bad -- I didn't read carefully enough. But the answer is still essentially correct -- just change the ordering of the levels of Season, which, by default, is alphabetic. df$Season <- factor(df$Season, lev = c("Summer","Fall","Winter","Spring")) df <- df[order(df$Season),] Learn about factors (Read the Intro to R tutorial if you haven't already). They are very handy (and much despised by some). -- Bert The result I am looking for would be something like:> > # 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 > > Any other thoughts? > > JR > > > -----Original Message----- > From: Bert Gunter [mailto:gunter.berton at gene.com] > Sent: Thursday, October 11, 2012 10:19 AM > To: ROLL Josh F > Cc: r-help at r-project.org > Subject: Re: [R] Sorting a data frame by specifying a vector > > ?order > df[order(yourcolumn, ] > > -- Bert > > > On Thu, Oct 11, 2012 at 10:08 AM, LCOG1 <jroll at lcog.org> wrote: >> 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","Spr >> ing"))),] >> >> Josh >> >> >> >> -- >> View this message in context: >> http://r.789695.n4.nabble.com/Sorting-a-data-frame-by-specifying-a-vec >> tor-tp4645867.html Sent from the R help mailing list archive at >> Nabble.com. >> >> ______________________________________________ >> 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. > > > > -- > > Bert Gunter > Genentech Nonclinical Biostatistics > > Internal Contact Info: > Phone: 467-7374 > Website: > http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm-- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm