更改日期格式从%y-%m-%d%h:%m:%s到%Y%M%D with lubridate和mutate

时间:2017-06-01 16:33:42

标签: r lubridate mutate

我有一个tbl_df,其中有两列 StartTime StopTime 。两者都是dttm

我想将其格式从"%y-%m-%d %h:%m:%s"更改为"%y%m%d"

我试过

data <- mutate(data, StartTime = ymd(StartTime), StopTime = ymd(StopTime))

但它返回

  
    

警告消息:1:所有格式都无法解析。找不到格式。 2:所有格式都无法解析。找不到格式。

  

我该怎么做?

请不要发送其他不使用lubridate包的问题。

由于

2 个答案:

答案 0 :(得分:3)

我认为这应该有用

library(dplyr)
library(lubridate)


df <- data_frame(StartTime1 = "2017-04-28 12:50:45")

df %>% mutate(StartTime2 = ymd_hms(StartTime1),
              StartTime3 = as_date(StartTime2))

#> # A tibble: 1 x 3
#>            StartTime1          StartTime2 StartTime3
#>                 <chr>              <dttm>     <date>
#> 1 2017-04-28 12:50:45 2017-04-28 12:50:45 2017-04-28

答案 1 :(得分:0)

我曾经遇到过一个问题,日期格式类似于:“2019-12-06T09:27:14”。

对我来说 ymd_hms 不起作用,我没有找到合适的解析器,所以解决方案是先用 string_replace 不需要的部分,然后像往常一样解析到日期..(如果需要,丢弃原始列)

 your_df %>%mutate(date_published = 
                   str_replace(article.date_published,T\\d\\d\\:\\d\\d\\:\\d\\d', ''), 
                   date_published= ymd(date_published))%>%
           select(-contains('article.date'))