O'Reilly logo

The R Book by Michael J. Crawley

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Complex Ordering with Mixed Directions

Sometimes there are multiple sorting variables, but the variables have to be sorted in opposing directions. In this example, the task is to order the database first by vegetation type in alphabetical order (the default) and then within each vegetation type to sort by worm density in decreasing order (highest densities first). The trick here is to use order (rather than rev(orderi)) but to put a minus sign in front of Worm.density like this:

worms[order(Vegetation,-Worm.density),]

           Field.Name  Area  Slope  Vegetation  Soil.pH   Damp  Worm.density
2      Silwood.Bottom   5.1      2      Arable      5.2  FALSE             7
18         Pound.Hill   4.4      2      Arable      4.5  FALSE             5
8             Ashurst   2.1      0      Arable      4.8  FALSE             4
10      Rookery.Slope   1.5      4   Grassland      5.0   TRUE             7
1         Nashs.Field   3.6     11   Grassland      4.1  FALSE             4
7        Church.Field   3.5      3   Grassland      4.2  FALSE             3
3       Nursery.Field   2.8      3   Grassland      4.3  FALSE             2
6            Oak.Mead   3.1      2   Grassland      3.9  FALSE             2
13       South.Gravel   3.7      2   Grassland      4.0  FALSE             2
12       North.Gravel   3.3      1   Grassland      4.1  FALSE             1
19         Gravel.Pit   2.9      1   Grassland      3.5  FALSE             1
14  Observatory.Ridge   1.8      6   Grassland      3.8  FALSE             0
16       Water.Meadow   3.9      0      Meadow      4.9   TRUE             8
15         Pond.Field   4.1      0      Meadow      5.0   TRUE             6
4         Rush.Meadow   2.4      5      Meadow      4.9   TRUE             5
9         The.Orchard   1.9      0     Orchard      5.7  FALSE             9
11        Garden.Wood   2.9     10       Scrub      5.2  FALSE             8
5     Gunness.Thicket   3.8      0       Scrub      4.2  FALSE             6
17          Cheapside   2.2      8       Scrub      4.7   TRUE             4
20          Farm.Wood   0.8     10       Scrub      5.1   TRUE             3

Using the minus sign only works when sorting numerical variables. For factor levels you can use the ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required