【问题标题】:Ordering dataframe by month-year date column按月年日期列排序数据框
【发布时间】:2019-11-12 07:49:36
【问题描述】:

我有一个数据框 df:

date        values
Apr-15        86
Apr-16        80
Apr-17        60
Aug-14        88
Aug-15        52
Aug-16        76

我想要的输出应该是:

 date        values
Aug-14        88
Apr-15        86
Aug-15        52
Apr-16        80
Aug-16        76
Apr-17        60 

我的日期格式不同,所以我做不到。

【问题讨论】:

    标签: r dplyr lubridate zoo


    【解决方案1】:

    您可以通过粘贴任意日期值然后order将列转换为日期对象

    df[order(as.Date(paste0("1-", df$date), "%d-%b-%y")), ]
    
    #    date values
    #4 Aug-14     88
    #1 Apr-15     86
    #5 Aug-15     52
    #2 Apr-16     80
    #6 Aug-16     76
    #3 Apr-17     60
    

    或者使用不需要日期的zoo::as.yearmon

    df[order(zoo::as.yearmon(df$date, "%b-%y")), ]
    

    数据

    df <- structure(list(date = structure(1:6, .Label = c("Apr-15", "Apr-16", 
    "Apr-17", "Aug-14", "Aug-15", "Aug-16"), class = "factor"), values = c(86L, 
    80L, 60L, 88L, 52L, 76L)), class = "data.frame", row.names = c(NA, -6L))
    

    【讨论】:

      【解决方案2】:

      你可以试试

      df[with(df,order(gsub("[^0-9]","",date))),]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多