代码之家  ›  专栏  ›  技术社区  ›  Sylvia Rodriguez

定义因子数据的顺序

  •  0
  • Sylvia Rodriguez  · 技术社区  · 6 年前

    我正在努力修改因子数据的顺序。以mtcars数据集为例,我使用以下代码按“cyl”排序数据。

    library(dplyr)
    arrange (mtcars, cyl)
    

    这将数据分别排序为cyl=4、6、8,但如何将此顺序更改为4、8、6?我试过 sort 使用 c(4, 8, 6) 但运气不好。一定有一些简单的解决办法。谢谢您。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ronak Shah    6 年前

    一种选择是定义 cyl 作为 factor 具有 levels 根据我们的喜好,然后使用 arrange

    library(dplyr)
    
    mtcars %>%
      mutate(cyl = factor(cyl, levels = c(4, 8, 6))) %>%
      arrange(cyl)
    

    同样的使用基数r

    df <- transform(mtcars, cyl = factor(cyl, levels = c(4, 8, 6)))
    df[order(df$cyl), ]
    

    或者另一个选择是使用 match 然后 order

    mtcars[order(match(mtcars$cyl, c(4, 8, 6))), ]
    
        2
  •  0
  •   akrun    6 年前

    使用 data.table

    library(data.table)
    as.data.table(mtcars)[order(factor(cyl, levels = c(4, 8, 6)))]