【问题标题】:how to reorder a dataframe based on another vector in R [duplicate]如何根据R中的另一个向量重新排序数据帧[重复]
【发布时间】:2020-04-27 18:17:01
【问题描述】:

我有一个数据框如下:

> df <- data.frame(BRANCH = c('AMB','GBM','CBE','GGN','KKE','KLM'), 
+                     OCT_REV = rnorm(6,50,5), 
+                     NOV_REV = rnorm(6,60,4), 
+                     DEC_REV = rnorm(6,55,10))
> df
  BRANCH  OCT_REV  NOV_REV  DEC_REV
1    AMB 57.76785 63.13167 39.21492
2    GBM 54.55668 64.89956 64.03446
3    CBE 50.61963 57.14174 54.64337
4    GGN 46.37132 65.48663 51.47701
5    KKE 49.24153 56.42736 46.68634
6    KLM 41.56488 63.67613 41.90277
> 

我的实际 DF 有多个列和 16 个分支。但在最终报告中,分支机构是根据其位置标准进行排序的。例如,我需要根据向量对整个数据帧进行重新排序

Branches = c('AMB','GBM','GGN','CBE','KLM','KKE')

预期输出

Branch  OCT_REV  NOV_REV  DEC_REV
   AMB 57.76785 63.13167 39.2149
   GBM 54.55668 64.89956 64.03446
   GGN 46.37132 65.48663 51.47701
   CBE 50.61963 57.14174 54.64337
   KLM 41.56488 63.67613 41.90277
   KKE 49.24153 56.42736 46.68634

对于单个向量,我可以在 R 中使用“匹配”函数,但如何根据另一个向量重新排序整个数据帧。

【问题讨论】:

  • 重新排序整个数据框是什么意思? match 在这里不够吗? df[match(df$BRANCH, Branches), ] ?
  • df$BRANCH &lt;- forcats::fct_relevel(df$BRANCH, Branches); dplyr::arrange(df, BRANCH)

标签: r


【解决方案1】:

您可以使用dplyr 订购您的 df

library(dplyr)
df %>%
  arrange(factor(BRANCH, levels = Branches))

【讨论】:

    猜你喜欢
    • 2014-10-27
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2016-03-06
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多