【问题标题】:How to sort a character vector according to a specific order?如何根据特定顺序对字符向量进行排序?
【发布时间】:2013-06-10 19:09:10
【问题描述】:

我有一个看起来像

的字符向量
c("white","white","blue","green","red","blue","red")

还有一个特定的顺序,比如

c("red","white","blue","green")

。我想根据第二个向量的顺序对第一个向量进行排序,以获得以下向量:c("red","red","white","white","blue","blue", "green")。 什么是最好的解决方案?

【问题讨论】:

    标签: r


    【解决方案1】:
    x <- c("white","white","blue","green","red","blue","red")
    y <- c("red","white","blue","green")
    x[order(match(x, y))]
    # [1] "red"   "red"   "white" "white" "blue"  "blue"  "green"
    

    【讨论】:

      【解决方案2】:

      使您的变量成为一个因子,其级别按适当的顺序排列,sort()

       x1 <- c("white","white","blue","green","red","blue","red")
       ord <- c("red","white","blue","green")
       f1 <- factor(x1,levels=ord)
       sort(f1)
       ## [1] red   red   white white blue  blue  green
       ## Levels: red white blue green
      

      如果您真的希望将结果作为字符向量,您可以使用x2 &lt;- as.character(sort(f1)) ...

      【讨论】:

        猜你喜欢
        • 2023-01-21
        • 2019-04-25
        • 2019-03-31
        • 2012-08-12
        • 1970-01-01
        • 2011-04-03
        • 2015-04-18
        • 1970-01-01
        相关资源
        最近更新 更多