如何在R中将20190101123411格式的数值转换为日期时间格式?
在R Studio中转换"YYYYMMDDHHMMSS"格式的日期时间
你的尝试代码存在两个关键问题:
- 错误地将日期时间数值当作时间戳处理,
as.POSIXct的origin参数是用来定义数值对应的起始基准时间(比如Unix纪元"1970-01-01"),而非匹配你的字符串格式; - 语法错误,
origin的参数值未加引号,写法不符合参数要求。
正确的处理方式是先将数值转为字符型,再指定对应的日期时间格式进行解析:
方法一:使用as.POSIXct直接解析
# 定义原始数值 x <- 20190101123411 # 转为字符型,确保格式完整 x_char <- as.character(x) # 指定格式解析为POSIXct类型的日期时间 datetime <- as.POSIXct(x_char, format = "%Y%m%d%H%M%S")
方法二:使用strptime解析(返回POSIXlt类型)
x <- 20190101123411 x_char <- as.character(x) # 解析为POSIXlt类型 datetime <- strptime(x_char, format = "%Y%m%d%H%M%S") # 如需转为POSIXct类型,执行以下步骤 datetime_ct <- as.POSIXct(datetime)
如果你的原始数据本身就是字符型(比如读入时就是"20190101123411"),可以省略转字符的步骤:
x <- "20190101123411" datetime <- as.POSIXct(x, format = "%Y%m%d%H%M%S")
格式符说明:
%Y:4位数字的年份%m:2位数字的月份(01-12)%d:2位数字的日期(01-31)%H:24小时制的小时数(00-23)%M:2位数字的分钟数(00-59)%S:2位数字的秒数(00-59)
内容的提问来源于stack exchange,提问作者Germain D
相关产品推荐
相关产品推荐

