Plyr arrange()只对1个变量进行排序

时间:2015-07-22 11:22:11

标签: r plyr

目标:使用plyr包中的arrange()独立地按2个变量的降序对数据帧进行排序

 dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"), 
                        levels = c("Low", "Med", "Hi"), ordered = TRUE),
             x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9),
             z = c(1, 1, 1, 2))
  arrange(dd, desc(y),desc(z))

产生目标:

    b x y z
    1 Low C 9 2
    2  Hi A 9 1
    3  Hi A 8 1
    4 Med D 3 1

但是,当使用与感兴趣的实际数据帧( ddin )相同的语法时, arrange()一次只排序1个变量,而另一个变量未排序。

有关 ddin 的一些细节:大型数据框。第一个操作是子集以仅保留3个变量:

ddin_sub <- select(ddin, var1, var2, var3)
ddin_sub <- arrange(ddin_sub, desc(var2), desc(var3))

var2,var3:numeric

关于这个问题可能存在的任何想法?谢谢。

1 个答案:

答案 0 :(得分:2)

如果您需要单独对列进行排序,

 library(dplyr)
 mutate_each(d1, funs(sort(., decreasing=TRUE)))

数据

 d1 <- data.frame(y = c(8, 2, 9, 9), z=c(3, 5, 2, 1))