按月份和年份对列名称进行排序

乌贾瓦尔·班达里

我需要按月份和年份对数据框的列名称进行排序。排序应按升序排列(最早的月份和年份在前,最近的月份和年份应在末尾。)下面显示的数据框的前3列应保持不变。

asd <- structure(list(Company = "Reliance Industries Limited", Symbol = "RELIANCE", 
               Var.1 = "Sales +", Mar.2018 = "116,915", Jun.2018 = "128,756", 
               Sep.2018 = "143,323", Dec.2018 = "156,898", Mar.2019 = "139,590", 
               Jun.2019 = "157,980", Sep.2019 = "149,302", Dec.2019 = "153,302", 
               Mar.2020 = "136,492", Jun.2020 = "88,253", Sep.2020 = "111,236", 
               Dec.2020 = "117,860", Mar.2017 = NA_character_, Dec.2017 = NA_character_, 
               Mar.2015 = NA_character_, Mar.2008 = NA_character_, Jun.2008 = NA_character_, 
               Mar.2010 = NA_character_, Jun.2012 = NA_character_, Mar.2009 = NA_character_, 
               Dec.2011 = NA_character_, Dec.2008 = NA_character_, Dec.2005 = NA_character_, 
               Dec.2006 = NA_character_, Jun.2010 = NA_character_, Jun.2011 = NA_character_, 
               Mar.2016 = NA_character_, Mar.2007 = NA_character_, Sep.2005 = NA_character_, 
               Sep.2008 = NA_character_, Jun.2009 = NA_character_, Sep.2009 = NA_character_, 
               Sep.2012 = NA_character_, Dec.2012 = NA_character_, Mar.2013 = NA_character_, 
               Jun.2013 = NA_character_, Sep.2013 = NA_character_, Dec.2013 = NA_character_, 
               Mar.2014 = NA_character_, Jun.2014 = NA_character_, Sep.2014 = NA_character_, 
               Dec.2014 = NA_character_, Jun.2005 = NA_character_, Sep.2017 = NA_character_, 
               Sep.2007 = NA_character_, Dec.2015 = NA_character_, Jun.2007 = NA_character_, 
               Dec.2009 = NA_character_, Mar.2012 = NA_character_, Dec.2016 = NA_character_, 
               Mar.2011 = NA_character_, Jun.2015 = NA_character_, Sep.2015 = NA_character_, 
               Jun.2016 = NA_character_, Sep.2016 = NA_character_, Jun.2017 = NA_character_, 
               Sep.2010 = NA_character_, Dec.2010 = NA_character_), row.names = 1L, class = "data.frame")
罗纳克·沙

将列名称转换为可以轻松订购的日期对象。

constant_cols <- 1:3
cols_to_sort <- names(asd)[-constant_cols]

cbind(asd[constant_cols], 
      asd[cols_to_sort[order(as.Date(paste0(cols_to_sort, '.01'), '%b.%Y.%d'))]])

可以使用来将其缩短一点zoo::as.yearmon

cbind(asd[constant_cols], 
      asd[cols_to_sort[order(zoo::as.yearmon(cols_to_sort, '%b.%Y'))]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章