> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of chipmaney > Sent: Thursday, August 26, 2010 3:00 PM > To: r-help@r-project.org > Subject: [R] Non-standard sorts on vectors > > > I have a dataset I need to sort: > > test.df<-data.frame(Zone=c("Floodplain", "Lake", > "Shoreline"),Cover=c(50,60,70)) > > However, I don't want it sorted ascending/descending but in > an order that I > define via a vector: > > sort.v<-data.frame(c("Lake","Shoreline","Floodplain")) > > I realize I could probably just create the vector of > [factors] in the order > I want, then assign the value: > > sort.v$Cover<-test.df$Cover > > However, this is inefficient.
What is your measure of inefficiency? If you always want results in this order I would recommend you convert the Cover column to a factor with the levels in the order that you want. E.g., > test.df <- data.frame( Zone=c("Floodplain","Lake","Floodplain","Shoreline","Lake","Shoreline"), Cover=c(45, 65, 49, 75, 67, 77), Year=c(1977, 1980, 1990, 1985, 1995, 2010)) > test.df$Zone <- factor(test.df$Zone, levels=c("Lake","Shoreline","Floodplain")) > # that call to factor could have been in the original call to > # to data.frame(), but if you made the data.frame with read.table() > # then it is easiest to make the factors in a separate step. > test.df Zone Cover Year 1 Floodplain 45 1977 2 Lake 65 1980 3 Floodplain 49 1990 4 Shoreline 75 1985 5 Lake 67 1995 6 Shoreline 77 2010 Now it sorts the way you want and tables, model summaries, plots, and lots of other things will be in the order that you like: > test.df[order(test.df$Zone),] Zone Cover Year 2 Lake 65 1980 5 Lake 67 1995 4 Shoreline 75 1985 6 Shoreline 77 2010 1 Floodplain 45 1977 3 Floodplain 49 1990 > table(test.df$Zone) Lake Shoreline Floodplain 2 2 2 > lm(data=test.df, Cover ~ Zone - 1) Call: lm(formula = Cover ~ Zone - 1, data = test.df) Coefficients: ZoneLake ZoneShoreline ZoneFloodplain 66 76 47 > library(lattice) > xyplot(data=test.df, Cover ~ Year | Zone) Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > Is there source code or a > syntactical trick > that will do the same more efficiently? Note: I have > investigated order() > and sort(), but neither seems to have an argument for > defining the sorting > order. > > Thanks in advance, Chipper > > -- > View this message in context: > http://r.789695.n4.nabble.com/Non-standard-sorts-on-vectors-tp 2340431p2340431.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.