关于转换日期格式

时间:2018-02-06 07:02:20

标签: r date

我需要将“日期”列转换为日期格式,但我获得了NA值 任何建议请

str(dli)
'data.frame':   39474 obs. of  4 variables:
 $ Regions: chr  "Tiruchengode" "Tiruchengode" "Tiruchengode" "Tiruchengode" ...
 $ Item   : chr  "TRACTOR TT35-4WD" "TRACTOR TT35-4WD" "TRACTOR TT35-4WD" "TRACTOR TT35-4WD" ...
 $ Dates  : chr  "2016-01-01" "2016-01-02" "2016-01-03" "2016-01-04" ...
 $ Data   : int  2 7 6 0 6 6 1 6 0 4 ...

我的实际数据如下

trac <- as.Date(dli$Dates, "%d/%m/%Y")

我使用上面的命令来执行输出

我的输出是

trac <- as.Date(dli$Dates, "%d/%m/%Y")

trac
   [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [30] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [59] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [88] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [117] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [146] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [175] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 

2 个答案:

答案 0 :(得分:0)

在用于将字符转换为日期的函数中,您指定的日期格式与日期格式的日期格式不对应。

在假人data.frame

dli <- data.frame(Dates = c("2016-01-01", "2016-01-02", 
                            "2016-01-03", "2016-01-04"))

将格式更改为"%Y-%m-%d"会返回:

trac <- as.Date(dli$Dates, format = "%Y-%m-%d")
trac
[1] "2016-01-01" "2016-01-02" "2016-01-03" "2016-01-04"

第二种选择是使用lubridate,这样可以更轻松地处理日期:

library(lubridate)

您可以使用功能ymd()(即年月日)来转换您的日期。它会自动推断格式。

trac <- ymd(dli$Dates)
trac
[1] "2016-01-01" "2016-01-02" "2016-01-03" "2016-01-04"

答案 1 :(得分:0)

日期已经采用Date格式,即%Y-%m-%d。因此,我们只需要应用as.Date(从之前发布的评论中发布)

as.Date(dli$Dates)