如何将字符型时分转换为时间类型并仅保留时分秒(去除自动日期)
解决方法
strptime()返回的是POSIXlt类型对象,本身就包含日期信息,若要仅保留时分秒的显示或存储纯时间格式,可参考以下几种方案:
方案1:转为字符型(仅用于展示)
如果不需要后续时间计算,只是要显示成HH:MM:SS格式,可将转换后的时间对象重新格式化为字符串:
mdp$time <- format(strptime(mdp$time, '%H:%M'), '%H:%M:%S')
处理后time字段变为字符型,内容仅保留时分秒,无日期信息。
方案2:用hms包存储纯时间类型
若需要保留时间的可计算性,同时只存储时分秒,推荐使用hms包的专门类型:
# 首次使用需安装包 install.packages("hms") library(hms) # 简洁转换方式 mdp$time <- as_hms(as.POSIXct(mdp$time, format = '%H:%M'))
该类型对象在显示时仅展示HH:MM:SS,且支持时间加减等运算。
方案3:用chron包的times类型
也可借助chron包的times()函数实现纯时间存储:
install.packages("chron") library(chron) mdp$time <- times(strptime(mdp$time, '%H:%M')$hour/24 + strptime(mdp$time, '%H:%M')$min/(24*60) + strptime(mdp$time, '%H:%M')$sec/(24*60*60))
此类型同样仅显示时分秒,且支持时间相关运算。
内容的提问来源于stack exchange,提问作者Getts the Traveller
相关产品推荐
相关产品推荐

