【问题标题】:trying to change the format of dates R试图改变日期的格式 R
【发布时间】:2021-11-27 00:43:26
【问题描述】:

我有一个df如下:

x = data.frame(
  week = c("2020-08-09", "2017-11-11", "2017-06-18", "2020-09-07", "2020-09-07", "2020-09-07",
           "2020-09-12", "2020-08-23", "2019-12-22", "2017-10-29"),
  store = c(14071, 11468, 2428, 17777, 14821, 10935,  5127, 14772, 14772, 14772)
)

我正在尝试删除周值中的“-”并将“01”添加到它们的末尾,以便“2020-08-09”将是“2020080901”等等。有没有一种简单的方法可以使用正则表达式/其他一些方法来处理星期列?谢谢!

【问题讨论】:

    标签: r dataframe date


    【解决方案1】:

    我们可以转换为Date,并用str_remove_all 删除- 或使用format 并在末尾添加01

    library(lubridate)
    library(dplyr)
    x <- x %>%
         mutate(week = format(ymd(week), "%Y%m%d01"))
    

    -输出

    x
             week store
    1  2020080901 14071
    2  2017111101 11468
    3  2017061801  2428
    4  2020090701 17777
    5  2020090701 14821
    6  2020090701 10935
    7  2020091201  5127
    8  2020082301 14772
    9  2019122201 14772
    10 2017102901 14772
    

    或使用base R

    x$week <- format(as.Date(x$week), "%Y%m%d01")
    

    【讨论】:

      【解决方案2】:

      这是另一种方法:

      library(dplyr)
      library(stringr)
      x %>% 
        mutate(week = paste0(str_remove_all(week, "-"), "01"))
      
               week store
      1  2020080901 14071
      2  2017111101 11468
      3  2017061801  2428
      4  2020090701 17777
      5  2020090701 14821
      6  2020090701 10935
      7  2020091201  5127
      8  2020082301 14772
      9  2019122201 14772
      10 2017102901 14772
      

      【讨论】:

        【解决方案3】:

        使用sub 的正则表达式方法 -

        sub('(\\d+)-(\\d+)-(\\d+)', '\\1\\2\\301', x$week)
        # [1] "2020080901" "2017111101" "2017061801" "2020090701" "2020090701" "2020090701"
        # [7] "2020091201" "2020082301" "2019122201" "2017102901"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-03
          • 2011-11-18
          • 1970-01-01
          • 1970-01-01
          • 2015-02-03
          • 2021-11-28
          相关资源
          最近更新 更多