【问题标题】:How to convert a column as date with special character?如何将列转换为具有特殊字符的日期?
【发布时间】:2019-07-26 16:24:01
【问题描述】:

在我的数据框中,我有一个日期列,我想以 d/m/y 格式将其从字符转换为日期。

我的数据负责人:

head(df$date)
[1] [17/Jun/2019:08:33:49 [17/Jun/2019:08:38:20 [17/Jun/2019:08:38:24 [17/Jun/2019:09:52:42
[5] [17/Jun/2019:09:52:44 [17/Jun/2019:09:52:45

我使用了这个,但它会将每个值都转换为 NA

df$date = as.Date(df$date, "[%d%b%y")

【问题讨论】:

  • 您好,您可以将dput(head(df$date)) 的输出发布到您的问题中吗?

标签: r


【解决方案1】:

试试:

df$date <- strptime(df$date, format = "[%d/%b/%Y:%H:%M:%S")
df$date <- as.Date(df$date, format = "%d/%m/%y")

【讨论】:

    【解决方案2】:

    使用tidyverse 方法,看起来dmy_hms() 函数可以容纳非典型的第一个冒号:

    library(lubridate)
    df <- df %>% mutate(date = dmy_hms(date), date = date(date)) 
    

    以你的第一个值为例:

    date <- "17/Jun/2019:08:33:49"
    date <- dmy_hms(date) 
    date
    #[1] "2019-06-17 08:33:49 UTC"
    date <- date(date) #or all in one line, date <- dmy_hms(date) %>% date()
    date 
    #[1] "2019-06-17"
    

    【讨论】:

      【解决方案3】:

      假设这是您的输入

      x <- c("[17/Jun/2019:08:33:49", "[17/Jun/2019:08:38:20",
              "17/Jun/2019:08:38:24", "[17/Jun/2019:09:52:42")
      

      先转成POSIXct格式再转成Date

      as.Date(as.POSIXct(x, format = "[%d/%b/%Y:%T"))
      #[1] "2019-06-17" "2019-06-17" "2019-06-17" "2019-06-17"
      

      或任何其他format

      format(as.POSIXct(x, format = "[%d/%b/%Y:%T"), "%d/%m/%Y")
      #[1] "17/06/2019" "17/06/2019" "17/06/2019" "17/06/2019"
      

      【讨论】:

        【解决方案4】:

        如果你想转换成 Date 对象试试这个。

        df$date = as.Date(df$date,format="[%d/%b/%Y:%H:%M:%S")
        

        如果您也想保留时间,请尝试以下方法。

        df$date = as.POSIXct(df$date,format="[%d/%b/%Y:%H:%M:%S")
        

        最好的祝愿。

        【讨论】:

          猜你喜欢
          • 2022-12-15
          • 2021-12-24
          • 2016-11-29
          • 1970-01-01
          • 2017-10-31
          • 1970-01-01
          • 1970-01-01
          • 2021-08-10
          • 2022-12-25
          相关资源
          最近更新 更多