使用自定义顺序在先前使用排列排序后排列行

Art*_*ito 0 r dplyr

我知道这已经被问过了,但我认为我的问题有点不同(不管是葡萄牙语)。我有这个数据集:

 df <- cbind(c(rep(2012,6),rep(2016,6)),
         rep(c('Emp.total',
               'Fisicas.total',
               'Outros,total',
               'Politicos.total',
               'Receitas.total',
               'Proprio.total'),2),
         runif(12,0,1))

colnames(df) <- c('Year,'Variable','Value)
Run Code Online (Sandbox Code Playgroud)

我想对行进行排序,首先将具有相同年份的所有内容分组。之后,我希望Variable像这样订购该列:

  1. 总收入
  2. 总财政
  3. 空总
  4. 总政治
  5. 自有总
  6. 总分

我知道我可以使用arrange()fromdplyr来按年份排序。但是,我不知道如何将其与任何例行程序结合使用,factor并且order不会弄乱以前的按年排序。

有什么帮助吗?谢谢

akr*_*run 5

我们创建一个自定义order的转换“变量”到factorlevels自定义指定order

library(dplyr)
df %>%
   arrange(Year, factor(Variable, levels = c('Receitas.total', 
       'Fisicas.total', 'Emp.total',  'Politicos.total', 
        'Proprio.total',  'Outros.total')))
# A tibble: 12 x 3
#    Year        Variable     Value
#   <dbl>           <chr>     <dbl>
# 1  2012  Receitas.total 0.6626196
# 2  2012   Fisicas.total 0.2248911
# 3  2012       Emp.total 0.2925740
# 4  2012 Politicos.total 0.5188971
# 5  2012   Proprio.total 0.9204438
# 6  2012    Outros,total 0.7042230
# 7  2016  Receitas.total 0.6048889
# 8  2016   Fisicas.total 0.7638205
# 9  2016       Emp.total 0.2797356
#10  2016 Politicos.total 0.2547251
#11  2016   Proprio.total 0.3707349
#12  2016    Outros,total 0.8016306
Run Code Online (Sandbox Code Playgroud)

数据

set.seed(24)
df <- data_frame(Year  =c(rep(2012,6),rep(2016,6)),
     Variable = rep(c('Emp.total',
           'Fisicas.total',
           'Outros,total',
           'Politicos.total',
           'Receitas.total',
           'Proprio.total'),2),
     Value = runif(12,0,1))
Run Code Online (Sandbox Code Playgroud)