【问题标题】:Convert date en letter into numeric and sort将日期 en 字母转换为数字并排序
【发布时间】:2021-02-24 08:40:41
【问题描述】:

我的数据框中有这样的日期格式(因子格式的日期),我想排序

date<-factor (c("13DEC2016", "02JAN2016", "27APR2016"))

目标是对其进行排序以得到类似的东西:

02JAN2016 27APR2016 13DEC2016

或喜欢:

02-01-2016  27-04-2016  13-12-2016

【问题讨论】:

    标签: r date sorting


    【解决方案1】:

    要对日期进行排序,您需要首先将date 的类从因子更改为日期。这可以使用 base R 或 lubridate 包来完成。

    date<-factor (c("13DEC2016", "02JAN2016", "27APR2016"))
    #Using base R
    sorted_date <- sort(as.Date(date, '%d%b%Y'))
    sorted_date
    #[1] "2016-01-02" "2016-04-27" "2016-12-13"
    #Using `lubridate`
    sorted_date <- sort(lubridate::dmy(date))
    

    完成此操作后,您可以使用format 获取所需格式的数据。

    format(sorted_date, '%d-%b-%Y')
    #[1] "02-Jan-2016" "27-Apr-2016" "13-Dec-2016"
    format(sorted_date, '%d-%m-%Y')
    #[1] "02-01-2016" "27-04-2016" "13-12-2016"
    toupper(format(sorted_date, '%d%b%Y'))
    #[1] "02JAN2016" "27APR2016" "13DEC2016"
    

    【讨论】:

    • as.Date(date, '%d%b%Y') 给了我NA NA NA
    • %b 取决于区域设置。您应该将语言环境设置为英语,以便 R 将 DECJAN 等标识为月份名称。
    猜你喜欢
    • 2018-09-30
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多