如何在R中从带毫秒的字符型时间列提取仅时分秒格式时间
报错原因
as.POSIXct()默认会尝试自动匹配时间字符串的标准格式,你输入的字符串是带毫秒的时分秒结构,不属于R默认识别的标准时间格式,因此会抛出格式不唯一的错误。
解决方法
方法1:指定格式做时间类型转换
转换为POSIXct类型时明确传入输入格式参数format = "%H:%M:%OS",其中%OS是R中专门用来匹配带毫秒的秒数的格式符:
# 可按需指定tz参数设置时区,避免时区偏移导致的时间错误 data$hms <- format(as.POSIXct(data$TIME, format = "%H:%M:%OS", tz = "UTC"), "%H:%M:%S")
方法2:字符串截取(更高效,无需类型转换)
你的输入时间格式固定为HH:MM:SS.ss结构,前8位就是你需要的%H:%M:%S内容,直接截取即可:
data$hms <- substr(data$TIME, 1, 8)
内容的提问来源于stack exchange,提问作者Hawky
相关产品推荐
相关产品推荐

