使用as.POSIXct转换字符型时间列结果全为NA的技术求助
解决POSIXct转换全为NA的问题
你的转换代码出现全NA的核心原因是格式字符串与原数据格式不匹配,具体有两处错误:
- 原数据中日期与时间用空格分隔,但你最初的格式字符串用了
T; - 格式字符串里的
%m后多了一个多余的%,写成了%m%-d,正确的格式应该是%m-%d。
正确转换代码
使用与原数据完全匹配的格式字符串即可完成转换:
# 修正格式字符串,匹配"YYYY-MM-DD HH:MM:SS"格式 df$DateTime <- as.POSIXct(df$FixDateTime, format = "%Y-%m-%d %H:%M:%S", tz = "MST") # 验证转换结果 head(df$DateTime) class(df$DateTime)
预期输出示例
执行后会得到正确的POSIXct类型数据:
head(df$DateTime) [1] "2017-03-15 15:00:04 MST" "2017-03-16 14:00:48 MST" "2017-03-17 13:00:22 MST" [4] "2017-03-18 12:00:47 MST" "2017-03-19 11:01:00 MST" "2017-03-20 10:00:47 MST" class(df$DateTime) [1] "POSIXct" "POSIXt"
额外说明
如果你的数据是标准ISO 8601格式(如2017-03-15T15:00:04),才需要用%Y-%m-%dT%H:%M:%S作为格式字符串。对于当前用空格分隔的日期时间格式,必须严格对应格式字符串中的分隔符。
内容的提问来源于stack exchange,提问作者Margaret Hughes
相关产品推荐
相关产品推荐

