首页 > 解决方案 > 根据数据框中的变量组对行进行排序

问题描述

我有一个看起来像这样的数据框 -

df=data.frame(Code=c('Q1','Q1','Q1','Q1','Q2','Q2','Q2','Q2','Q3','Q3','Q3','Q3'),
          Fiscal_Year=c('FY18','FY16','FY17','FY15','FY15','FY18','FY17','FY16','FY15','FY16','FY17','FY18'),
          Score=c(0.23,0.25,0.32,0.41,0.61,0.54,0.45,0.51,0.78,0.79,0.81,0.84))

我的目标是按问题分组Code(数据框中已经是这种情况),然后对于每个组,按Fiscal_Year.

财政年度为 FY15(2015 财政年度)、FY16(2016 财政年度)、FY17(2017 财政年度)和 FY18(2018 财政年度)。

所以级别的顺序是 FY15 < FY16 < FY17 < FY18。

为了定义 R 中的级别,我执行了以下操作 -

#Convert column to factor
df$Fiscal_Year=as.factor(df$Fiscal_Year)
#Define order of levels
levels(df$Fiscal_Year)=c("FY15","FY16","FY17","FY18")

接下来,我希望分组Code,然后在每个组内升序排序Fiscal_Year

例如,对于问题组Q2,我希望按会计年度(FY15、FY16、FY17、FY18)的升序对行进行排序。其他问题组也是如此。

我的尝试

使用 dplyr 包,我尝试这样做

library(dplyr)

df=sat %>%
group_by(CTQ_QUEST_CODE,FY) %>%
arrange(CTQ_QUEST_CODE,desc(FY))

但是我没有得到我正在寻找的结果。

对此的任何投入将不胜感激。

标签: rsortingdplyr

解决方案


只需.by_group = TRUE添加arrange()

df %>%
        group_by(Code) %>%
        arrange(Fiscal_Year, .by_group = TRUE)

推荐阅读