如何解析时间-日期格式(非日期-时间)?lubridate处理反向格式
解析反向顺序的日期时间列
先确认你的数据集:
df <- tribble(~activity, ~time_date, "run", "15:06:17 03/08/2016", "skip", "09:01:00 03/08/2016")
下面提供三种实用方法,把字符型的time_date列转成可正常使用的日期时间类型:
方法1:lubridate自定义格式解析
用lubridate的parse_date_time()直接指定格式模板,对应时分秒 月/日/年的格式,格式规则为%H:%M:%S %m/%d/%Y:
library(lubridate) # 新增解析后的日期时间列 df$time_date_parsed <- parse_date_time(df$time_date, orders = "%H:%M:%S %m/%d/%Y") # 验证类型,会输出标准的日期时间类型标识 class(df$time_date_parsed)
方法2:拆分后组合(lubridate + stringr)
先拆分时间和日期部分,分别解析后相加得到完整日期时间:
library(lubridate) library(stringr) # 提取日期部分转成日期类型,提取时间部分转成时间类型,二者相加 df$time_date_parsed <- mdy(str_extract(df$time_date, "\\d{2}/\\d{2}/\\d{4}")) + hms(str_extract(df$time_date, "\\d{2}:\\d{2}:\\d{2}"))
方法3:base R原生函数处理
无需额外加载包,用strptime()指定格式后,转成更常用的POSIXct类型:
# 先转成POSIXlt类型,再转换为更通用的POSIXct类型 df$time_date_parsed <- as.POSIXct(strptime(df$time_date, format = "%H:%M:%S %m/%d/%Y"))
内容的提问来源于stack exchange,提问作者Mishalb
相关产品推荐
相关产品推荐

