假设我有一个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
我想按列b和c排序x,但保持a的顺序和以前一样 . x[order(x$b, x$c),]
- 中断列a的顺序 . 这就是我要的:
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
有一个快速的方法吗?
目前我运行“for”循环并对每个子集进行排序,我敢肯定必须有更好的方法 .
谢谢!伊利亚
3 回答
如果已经订购了列“a”,那么这很简单:
如果列a未排序(但已分组),请创建一个具有x $ a级别的新因子并使用该因子 .
谢谢Spacedman!你的推荐很有效 .
继Gavin的评论之后