代码之家  ›  专栏  ›  技术社区  ›  trilisser

按特定重复值序列排序表

  •  0
  • trilisser  · 技术社区  · 1 年前

    我有一个数据帧:

    df <- data.frame(col1 = c(1,1,1,1,2,2,2,2,3,3,3,3),
                     col2 = rep(c("A", "B", "C", "D"), 3))
    
    
       col1 col2
    1     1    A
    2     1    B
    3     1    C
    4     1    D
    5     2    A
    6     2    B
    7     2    C
    8     2    D
    9     3    A
    10    3    B
    11    3    C
    12    3    D
    
    

    我想对数据帧进行重新排序,使col2中的重复序列遵循下一个模式:A、C、B、D。 欲望表是:

    df_result <- data.frame(col1 = c(1,1,1,1,2,2,2,2,3,3,3,3),
                            col2 = rep(c("A", "C", "B", "D"), 3))
    
       col1 col2
    1     1    A
    2     1    C
    3     1    B
    4     1    D
    5     2    A
    6     2    C
    7     2    B
    8     2    D
    9     3    A
    10    3    C
    11    3    B
    12    3    D
    
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Edward    1 年前

    一个简单的方法是将col2转换为因子,并按照您想要的方式重新排序级别。

    library(dplyr)
    
    mutate(df, col2=factor(col2, levels=c("A","C","B","D"))) |>
      arrange(col1, col2)
    
       col1 col2
    1     1    A
    2     1    C
    3     1    B
    4     1    D
    5     2    A
    6     2    C
    7     2    B
    8     2    D
    9     3    A
    10    3    C
    11    3    B
    12    3    D