【问题标题】:How to sort the month_year column [duplicate]如何对月份年份列进行排序[重复]
【发布时间】:2022-01-04 14:02:20
【问题描述】:

我正在尝试首先显示 21 年 3 月,然后从那里按时间顺序向下显示

     emp.data <- data.frame(
  emp_id = c (1:12), 
  emp_name = c("Rick","Dan","Michelle","Ryan","Gary","aa","bb","cc","dd","ee","qq","ww"),
  m_year =c("Dec-2020", "Nov-2020", "Oct-2020", "Sep-2020", "Aug-2020", 
                "Jul-2020", "Jun-2020", "May-2020", "Apr-2020", "Mar-2021", "Feb-2021", 
                "Jan-2021")
)

我尝试对变量进行排序,但仍然没有得到预期的顺序

emp.data$m_year = emp.data$m_year[order(as.yearmon(emp.data$m_year, "%b-%Y"), decreasing = TRUE)]

【问题讨论】:

    标签: r


    【解决方案1】:

    转换为 yearmon 类,在这种情况下它们按时间顺序排序。最后我们转换回字符。如果将管道的最后一段保留为 yearmon 可以,请省略它。

    library(zoo)
    
    x |>
      as.yearmon("%b-%Y") |>
      sort(decreasing = TRUE) |>
      format("%b-%Y")
    ##  [1] "Mar-2021" "Feb-2021" "Jan-2021" "Dec-2020" "Nov-2020" "Oct-2020"
    ##  [7] "Sep-2020" "Aug-2020" "Jul-2020" "Jun-2020" "May-2020" "Apr-2020"
    

    也可以这样写:

    format(sort(as.yearmon(x, "%b-%Y"), decreasing = TRUE), "%b-%Y")
    

    或者像这样:

    x[order(as.yearmon(x, "%b-%Y"), decreasing = TRUE)]
    

    【讨论】:

    • 感谢它的工作正常
    • 在您的代码的帮助下,我可以对 m_year 列进行排序,但基于其他列未排序,请检查示例数据@G。格洛腾迪克
    • 试试这个:emp.data[order(as.yearmon(emp.data$m_year, "%b-%Y"), decreasing = TRUE), ]
    猜你喜欢
    • 2018-11-24
    • 2015-05-20
    • 2023-04-01
    • 1970-01-01
    • 2012-01-11
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多