将保存为字符的时间转换为时间类型,但只保留小时

问题描述 投票:0回答:1

在转换仅包含“小时:分钟”且以前为字符类型的数据框字段后,如何保留 H:M:S (并丢弃自动插入的日期)?

这是我的代码

mdp$time <- strptime(mdp$time,'%H:%M')

mdp
是一个 data.frame,字段
time
包含格式为 HH:MM 的小时

r
1个回答
0
投票

若要将字符格式转换为 POSIXlt 格式后仅保留时间部分(H:M:S)并丢弃日期部分,可以使用 format 函数并指定所需的格式模式。具体方法如下:

mdp$time <- format(strptime(mdp$time, '%H:%M'), format = '%H:%M:%S')

说明:

strptime(mdp$time, '%H:%M') 将 mdp 数据框的时间列中的字符串转换为 POSIXlt 格式,使用格式字符串 %H:%M 指定输入以小时为单位,分钟格式。

然后使用 format(...) 将 POSIXlt 对象转换回字符串,但这次使用格式字符串 %H:%M:%S。此格式字符串指定输出应采用“小时:分钟:秒”格式。由于原始数据中没有秒,这将导致 :00 被添加为秒组件。

因此,执行这行代码后,mdp 数据框中的时间列将包含格式为“HH:MM:00”的时间值。

此外,如果您只想使用“HH:MM”而不需要秒部分,则可以简单地使用 %H:%M 作为格式字符串:

mdp$time <- format(strptime(mdp$time, '%H:%M'), format = '%H:%M')
这将在转换后的时间栏中保留原始的“HH:MM”格式。

© www.soinside.com 2019 - 2024. All rights reserved.