【问题标题】:Convert Character to date将字符转换为日期
【发布时间】:2019-07-07 10:33:21
【问题描述】:

我已经查看了一些较早的答案,但没有一个能解决我的问题,所以就在这里。

我拥有的数据采用这种格式 (D-M-Y H:M),这是一个字符变量。

这是数据集

23-03-2019 21:35
23-03-2019 21:36
23-03-2019 21:37
23-03-2019 21:44
23-03-2019 21:44
23-03-2019 21:44
23-03-2019 21:44

我已使用此代码,但结果显示不适用

data1 <- as.Date(data$InvoiceDate,  "%d/%m/%y %H:%M")

所以请有人帮助我,我也经历了这个问题的其他类似答案,但结果是一样的。

谢谢

【问题讨论】:

  • 您的格式未正确指定。比较指定的"%y/%m/%d %H:%M" 和您在数据集中表示的"%d-%m-%Y %H:%M"(如"23-03-2019 21:35")。
  • 我也这样做了,但仍然显示 NA。该数据集的结构表明它是一个具有 97785 个级别的因子。
  • 您能否编辑您的问题以包含运行dput(head(data$InvoiceDate)) 的输出?这将允许人们使用相同格式的数据样本。
  • (您似乎没有按照 thelatemail 的建议将冒号更改为破折号或将 %y 更改为 %Y。当我根据您的因素这样做时,它对我有用。您也可以选择试试lubridate::dmy_hm(data$Invoice)。)

标签: r lubridate date-conversion


【解决方案1】:

将该列覆盖为日期列怎么样:

library(tidyverse)
data <- data %>% mutate(InvoiceDate = dmy_hm(InvoiceDate)) #dmy_hm() converts to date
#or if you really need a separate vector:
data1 <- dmy_hm(data$InvoiceDate)

您可以在 tidyverse 的子库 lubridate 中阅读有关 dmy_hm() 和类似功能的信息。我觉得它很有用。

【讨论】:

    猜你喜欢
    • 2011-11-28
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多