目标:使用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
关于这个问题可能存在的任何想法?谢谢。
答案 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))