【问题标题】:How to arrange data rows in by specific order of a particular grouping variable level in r [duplicate]如何按r中特定分组变量级别的特定顺序排列数据行[重复]
【发布时间】:2021-10-18 18:38:46
【问题描述】:

我想知道如何按 r 中特定分组变量级别的特定顺序排列数据行。

使用mtcars 数据集,我想创建一个名为mtcars_arrange 的数据框,其中行首先由gear 值按以下顺序组织:

> # desired gear order
> gear_order <- c(4, 3, 5)
> gear_order
[1] 4 3 5

然后,我希望数据集按特定的carb 值组织:

> # desired carb order
> carb_order <- c(4, 1, 2, 3, 6, 8)
> carb_order
[1] 4 1 2 3 6 8

我知道您可以使用dplyr::arrange() 命令来完成类似的任务,但我不知道如何才能让它为我的目的工作。

任何帮助将不胜感激。谢谢。



以下是与此问题相关的一些废代码:

# dataset
mtcars

# unique values of gear variable
unique(mtcars$gear)

# unique values of carb variable
unique(mtcars$carb)

# desired gear order
gear_order <- c(4, 3, 5)

# desired carb order
carb_order <- c(4, 1, 2, 3, 6, 8)

【问题讨论】:

    标签: r dplyr grouping arrange-act-assert


    【解决方案1】:

    我们可以转换为factor,将levels指定为arrange中创建的向量对象

    library(dplyr)
    mtcars1 <- mtcars %>% 
         arrange(factor(gear, levels = gear_order), 
                factor(carb, levels = carb_order))
    

    【讨论】:

    • 酷。谢谢。有没有办法通过基于外部列表或类似的东西指定订单来做到这一点?也就是说,如果unique() 命令没有产生想要的顺序,而用户心中有一个特定的顺序,你可以使用arrange() 来使用外部列表来完成任务吗?
    • @Mel 你可以为每一列指定levels = yourvec1yourvec2
    • @Mel 我使用unique 只是因为您显示的那些是基于unique 订单
    • 对不起,我以为我按了支票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多