【问题标题】:Plyr arrange() sorts only 1 variablePlyr 安排()仅排序 1 个变量
【发布时间】:2015-07-22 11:22:11
【问题描述】:

目标:使用 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) 使用相同的语法时, 安排() 一次只对 1 个变量进行排序,而另一个未排序。

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

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

var2, var3: 数字

关于问题可能出在哪里的任何想法?谢谢。

【问题讨论】:

  • 您可能必须展示一个不起作用的示例。 d1 &lt;- data.frame(y = c(8, 2, 9, 9), z=c(3, 5, 2, 1));arrange(d1, desc(y), desc(z)) 按预期工作。你希望它独立排序吗?在那种情况下d1 %&gt;% mutate_each(funs(sort(.,decreasing=TRUE)))
  • 非常感谢阿克伦。是的,对 df 变量进行独立排序。我编辑了这个问题以反映这一重要要求。 mutate_each() 就像一个魅力。

标签: r plyr


【解决方案1】:

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

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

数据

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

【讨论】:

    猜你喜欢
    • 2021-11-13
    • 2019-05-21
    • 2017-10-16
    • 2017-08-13
    • 1970-01-01
    • 2022-12-16
    • 2016-01-10
    • 1970-01-01
    • 2015-08-03
    相关资源
    最近更新 更多