R语言如何将HH:MM:SS类型时间列格式化为HH:MM格式
问题解决办法
原因说明
你使用hms包生成的hms类对象有专属的format实现,会忽略传入的自定义格式参数,所以调用format(x, "%H:%M")没有生效,默认输出完整的HH:MM:SS格式。
可直接使用的调整方案
方案1:转成POSIX时间类型后格式化(直接截断秒数)
这是最简便的方案,直接将hms对象转成POSIXct类型后再调用format即可:
format(as.POSIXct(x), "%H:%M")
运行后输出结果如下:
[1] "00:03" "00:13" "00:30" "00:52" "01:07" "00:48" "01:04" "01:10" "00:49" "01:00" "00:42" [12] "00:48" "00:33" "00:36" "00:42" "00:26" "00:38" "00:45" "00:57" "01:08" "01:19" "01:28" [23] "01:05"
方案2:按分钟四舍五入后再格式化
如果需要对秒数做四舍五入、向上/向下取整到分钟,可以先对原始时间值做精度处理,再格式化:
# 示例:四舍五入到分钟 x_rounded <- hms::hms(round(as.numeric(x)/60)*60) format(as.POSIXct(x_rounded), "%H:%M")
这种方式下00:30:59这类带秒的时间会被处理为00:31,符合需要进位的场景。
内容的提问来源于stack exchange,提问作者Vinicius B. de S. Moreira
相关产品推荐
相关产品推荐

