我有一个csv文件,其日期具有以下格式。
8/13/2016
8/13/2016
8/13/2016
2016-08-13T08:26:04Z
2016-08-13T14:30:23Z
8/13/2016
8/13/2016
当我将其导入R时,它将其当作字符。我想将其转换为日期格式,但是当我将其转换为日期格式时,它将使用所有NA值
as.Date(df$create_date,format="%m%d%y")
CSV中的日期字段具有记录日期的不同格式。如何将其转换为R中的日期格式
一个基本的R选项(假设OP的'create_date'列中只有两种格式)将创建一个逻辑索引,grepl
其中以'year'开头的那些日期元素基于该逻辑索引对'create_date'进行子集化('i1'),分别转换为Date
类,并将其分别分配Date
给与数据集的行数相同长度的向量,以创建完整的Date
类。
i1 <- grepl("^[0-9]{4}", df$create_date)
v1 <- as.Date(df$create_date[i1])
v2 <- as.Date(df$create_date[!i1], "%m/%d/%Y")
v3 <- Sys.Date() + 0:(nrow(df)-1)
v3[i1] <- v1
v3[!i1] <- v2
df$create_date <- v3
或者正如我在OP的帖子(第一篇)中评论的parse_date_time
,lubridate
可以使用
library(lubridate)
as.Date(parse_date_time(df$create_date, c('mdy', 'ymd_hms')))
#[1] "2016-08-13" "2016-08-13" "2016-08-13" "2016-08-13"
#[5] "2016-08-13" "2016-08-13" "2016-08-13"
df <- structure(list(create_date = c("8/13/2016", "8/13/2016",
"8/13/2016",
"2016-08-13T08:26:04Z", "2016-08-13T14:30:23Z", "8/13/2016",
"8/13/2016")), .Names = "create_date", class = "data.frame",
row.names = c(NA, -7L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句