Let's say I have a data.frame
x <- data.frame(a = c('A','A','A','A','A', 'C','C','C','C', 'B','B','B'), b = c('a','c','a','a','c', 'd', 'e','e','d', 'b','b','b'), c = c( 7, 3, 2, 4, 5, 3, 1, 1, 5, 5, 2, 3), stringsAsFactors = FALSE) > x a b c 1 A a 7 2 A c 3 3 A a 2 4 A a 4 5 A c 5 6 C d 3 7 C e 1 8 C e 1 9 C d 5 10 B b 5 11 B b 2 12 B b 3
I would like to sort x by columns b and c but keeping order of a as before. x[order(x$b, x$c),]
- breaks order of column a. This is what I want:
a b c 3 A a 2 4 A a 4 1 A a 7 2 A c 3 5 A c 5 6 C d 3 9 C d 5 7 C e 1 8 C e 1 11 B b 2 12 B b 3 10 B b 5
Is there a quick way of doing it?
Currently I run "for" loop and sort each subset, I'm sure there must be a better way.
Thank you! Ilya