【问题标题】:How to change date format in R data frame and add to new column?如何更改 R 数据框中的日期格式并添加到新列?
【发布时间】:2021-01-12 17:47:33
【问题描述】:

假设我有以下日期为 2020 年的数据框:

date
2020-01-01T05:00:00+0000
2020-02-01T05:00:00+0000
2020-01-01T05:00:00+0000
2020-03-01T05:00:00+0000

列是type character

我想创建一个返回的第二列。 1 月 20 日、2 月 20 日等。即以下:

date                       date_name
2020-01-01T05:00:00+0000   Jan-20
2020-02-01T05:00:00+0000   Feb-20
2020-01-01T05:00:00+0000   Jan-20
2020-03-01T05:00:00+0000   Mar-20

请注意,例如-01- 指一月份。

有人知道怎么做吗?

【问题讨论】:

    标签: r dataframe date


    【解决方案1】:

    试试这个。您只需要年份和月份,因此您可以使用as.Date()format() 来达到您的预期:

    #Code
    df$date_name <- format(as.Date(df$date),'%b-%Y')
    

    输出:

    df
                          date date_name
    1 2020-01-01T05:00:00+0000  Jan-2020
    2 2020-02-01T05:00:00+0000  Feb-2020
    3 2020-01-01T05:00:00+0000  Jan-2020
    4 2020-03-01T05:00:00+0000  Mar-2020
    

    使用的一些数据:

    #Data
    df <- structure(list(date = c("2020-01-01T05:00:00+0000", "2020-02-01T05:00:00+0000", 
    "2020-01-01T05:00:00+0000", "2020-03-01T05:00:00+0000")), row.names = c(NA, 
    -4L), class = "data.frame")
    

    【讨论】:

    • @ThomasIsCoding 非常感谢 :),也支持你的,但我不是 data.table 的忠实粉丝哈哈
    【解决方案2】:

    data.table 选项(但 @Duck 的 format 方法更有效)

    > setDT(df)[, date_name := paste0(month.abb[month(date)], "-", substr(year(date), 3, 4))][]
                           date date_name
    1: 2020-01-01T05:00:00+0000    Jan-20
    2: 2020-02-01T05:00:00+0000    Feb-20
    3: 2020-01-01T05:00:00+0000    Jan-20
    4: 2020-03-01T05:00:00+0000    Mar-20
    

    【讨论】:

    • 使用data.table的好方法
    【解决方案3】:

    我们可以从zoo使用as.yearmon

    library(dplyr)
    library(zoo)
    df %>% 
        mutate(date_name = as.yearmon(date))
    

    -输出

    #                      date date_name
    #1 2020-01-01T05:00:00+0000  Jan 2020
    #2 2020-02-01T05:00:00+0000  Feb 2020
    #3 2020-01-01T05:00:00+0000  Jan 2020
    #4 2020-03-01T05:00:00+0000  Mar 2020
    

    数据

    df <- structure(list(date = c("2020-01-01T05:00:00+0000", "2020-02-01T05:00:00+0000", 
    "2020-01-01T05:00:00+0000", "2020-03-01T05:00:00+0000")), row.names = c(NA, 
    -4L), class = "data.frame")
    

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 2021-04-14
      • 1970-01-01
      • 2019-01-20
      • 2015-04-15
      • 2022-06-15
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多