【问题标题】:Reorder a column value based on a vector within a group in a dataframe in R [duplicate]基于R中数据框中组内的向量对列值重新排序[重复]
【发布时间】:2020-08-29 17:32:30
【问题描述】:

我有一个如下的数据框:

df <- data.frame("QuarterYear" = c("2019 Q1","2019 Q1","2019 Q2","2019 Q2","2019 Q3","2019 Q3","2019 Q3"), "Size" = c("Medium","Small","Large","Medium","Large","Medium","Small"),
                 "percentage" = c(98,2,29,71,13,74,13))

QuarterYear   Size percentage
1  2019 Q1 Medium         98
2  2019 Q1  Small          2
3  2019 Q2  Large         29
4  2019 Q2 Medium         71
5  2019 Q3  Large         13
6  2019 Q3 Medium         74
7  2019 Q3  Small         13

我有一个向量:

size <- c("Small","Medium","Large")

我需要根据每个QuarterYear

的向量size来排列Size

预期的输出如下:

QuarterYear   Size percentage
1    2019 Q1 Small          2
2    2019 Q1 Medium         98
3    2019 Q2 Medium         71
4    2019 Q2 Large          29
5    2019 Q3 Small          13
6    2019 Q3 Medium         74
7    2019 Q3 Large          13

如何在 R 中实现这一点?

提前致谢!!

【问题讨论】:

    标签: r dataframe sorting vector


    【解决方案1】:

    您可以在order 中使用match

    df[order(df$QuarterYear, match(df$Size, size)),]
    #  QuarterYear   Size percentage
    #2     2019 Q1  Small          2
    #1     2019 Q1 Medium         98
    #4     2019 Q2 Medium         71
    #3     2019 Q2  Large         29
    #7     2019 Q3  Small         13
    #6     2019 Q3 Medium         74
    #5     2019 Q3  Large         13
    

    【讨论】:

      【解决方案2】:

      这是data.table 解决方案:

      library(data.table)
      df = data.table(df)
      setorder(df, QuarterYear, -Size)
      
      
         QuarterYear   Size percentage
      1:     2019 Q1  Small          2
      2:     2019 Q1 Medium         98
      3:     2019 Q2 Medium         71
      4:     2019 Q2  Large         29
      5:     2019 Q3  Small         13
      6:     2019 Q3 Medium         74
      7:     2019 Q3  Large         13
      

      【讨论】:

        猜你喜欢
        • 2023-01-19
        • 1970-01-01
        • 1970-01-01
        • 2016-12-23
        • 2018-05-01
        • 1970-01-01
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多