Meh*_*lar 5 sorting r dataframe
我有一个数据框,在R中有900,000行和11列.列名和类型如下:
column name: date / mcode / mname / ycode / yname / yissue / bsent / breturn / tsent / treturn / csales
type: Date / Char / Char / Char / Char / Numeric / Numeric / Numeric / Numeric / Numeric / Numeric
Run Code Online (Sandbox Code Playgroud)
我想按以下顺序按这些变量对数据进行排序:
级别的顺序在这里很重要,即它们应该首先按日期排序,如果有相同的日期,它们应该按mcode排序,依此类推.我怎么能在R?
小智 11
也许是这样的?
> df<- data.frame(a=rev(1:10), b=rep(c(2,1),5), c=rnorm(10))
> df
a b c
1 10 2 -0.85212079
2 9 1 -0.46199463
3 8 2 -1.52374565
4 7 1 0.28904717
5 6 2 -0.91609012
6 5 1 1.60448783
7 4 2 0.51249796
8 3 1 -1.35119089
9 2 2 -0.55497745
10 1 1 -0.05723538
> with(df, df[order(a, b, c), ])
a b c
10 1 1 -0.05723538
9 2 2 -0.55497745
8 3 1 -1.35119089
7 4 2 0.51249796
6 5 1 1.60448783
5 6 2 -0.91609012
4 7 1 0.28904717
3 8 2 -1.52374565
2 9 1 -0.46199463
1 10 2 -0.85212079
Run Code Online (Sandbox Code Playgroud)
"order"函数可以将几个向量作为参数.
在早期解决方案的基础上,这里有另外两种方法.第二种方法需要plyr.
df.sorted = df[do.call(order, df[names(df)]),];
df.sorted = arrange(df, a, b, c)
Run Code Online (Sandbox Code Playgroud)