R语言如何将datetime类型列转换为仅保留HH:MM:SS的time格式
R语言提取datetime列时间部分的实现方法
以下两种是实际开发中最常用的实现方案:
方法1:基础R实现(无需安装额外包)
如果你的目标列已经是POSIXct/POSIXlt类型的datetime格式,直接调用format()函数即可:
# 构造示例数据 df <- data.frame( datetime = as.POSIXct(c("2021-05-31 13:25:10", "2021-06-01 08:05:22", "2021-06-02 22:19:47")) ) # 提取HH:MM:SS格式的时间部分,默认返回字符类型 df$time <- format(df$datetime, "%H:%M:%S")
参数说明:%H对应24小时制小时,%M对应分钟,%S对应秒。如果需要12小时制格式,可以把格式参数改为%I:%M:%S %p,输出样式为01:25:10 PM。
方法2:tidyverse生态实现(返回可计算的时间类型)
如果后续需要对时间列做排序、差值计算等操作,推荐用lubridate和hms包的组合,返回标准hms时间类型而非纯字符:
# 加载依赖包 library(dplyr) library(lubridate) library(hms) # 管道操作生成时间列 df <- df %>% mutate(time = as_hms(datetime))
前置检查说明
如果你的列目前是字符串格式而非datetime类型,需要先做格式转换再提取时间:
- 基础R转换:
df$datetime <- as.POSIXct(df$datetime, format = "%Y-%m-%d %H:%M:%S") - lubridate转换:
df$datetime <- ymd_hms(df$datetime)
内容的提问来源于stack exchange,提问作者pancaldi
相关产品推荐
相关产品推荐

