【发布时间】:2018-05-01 21:49:29
【问题描述】:
对于这个示例 data.frame,
df <- data.frame(var1=c("b","a","b","a","a","b"),
var2=c("l","l","k","k","l","k"),
var3=c("t","t","x","t","x","x"),
var4=c(5,3,3,5,5,3),
stringsAsFactors=F)
未分类
var1 var2 var3 var4
1 b l t 5
2 a l t 3
3 b k x 3
4 a k t 5
5 a l x 5
6 b k x 3
我想同时按此顺序对“var2”、“var3”和“var4”三列进行排序。一列升序,另外两列降序。要排序的列名存储在变量中。
sort_asc <- "var2"
sort_desc <- c("var3","var4")
在 base R 中执行此操作的最佳方法是什么?
更新详情
如果先按“var2”升序排序(第 1 步)然后按“var3”和“var4”降序排序(如第 2 步),这是输出。
var1 var2 var3 var4
a l x 5
b k x 3
b k x 3
a k t 5
b l t 5
a l t 3
但我正在寻找的是同时做这三种排序来得到这个:
var1 var2 var3 var4
b k x 3
b k x 3
a k t 5
a l x 5
b l t 5
a l t 3
'var2'是升序(k,l),在k和l内,'var3'是降序,'var4'也是降序
澄清一下,这个问题与其他 data.frame 排序问题有何不同...
- 多列排序
- 要排序的列名存储在变量中
- 不同的排序方向(asc、desc)
- 排序不是逐步的(一个接一个的排序),而是同时的(同时所有选定的列)
- 使用基础 R,而不是 dplyr
【问题讨论】:
-
您想要排序的变量的顺序也很重要。例如,您想先按升序变量排序,然后按降序排序?还可以查看
order的decreasing参数,它可以是一个向量。 -
@nicole 我想同时使用所有变量。不是一个接一个。
-
这没有意义。当您按两个变量排序时,行按第一个变量排序,如果第一个变量的值相同,则第二个变量将打破平局。没有“同时使用所有变量”。
-
我们需要了解当不同的变量以不同的顺序排列时,您希望它看起来如何——您希望嵌套如何工作?
标签: r