在R中如何将character类型时间列转换为指定格式integer类型
R语言实现Time列格式转换
你可以根据使用场景选择以下任意一种方案:
方案1:基础R实现(无需加载额外包)
# 构造示例数据(你已经有df1的话可以跳过这一步) df1 <- data.frame( ID = 1:5, Time = c("16:00:00", "14:30:00", "9:23:00", "10:00:00", "23:59:00") ) # 核心转换逻辑 df1$Time <- as.integer(gsub(":", "", df1$Time)) %/% 100
逻辑说明:先用gsub移除时间字符串里的所有冒号,转为整数后整除100,直接去掉末尾的秒数部分,得到目标格式。
方案2:tidyverse生态实现
如果你的项目已经在使用tidyverse系列包,可以用以下写法:
library(tidyverse) df1 <- df1 %>% mutate(Time = str_remove_all(Time, ":") %>% as.integer() %>% `%/%`(100))
方案3:时间类型解析实现(兼容性更强)
如果你的数据存在时间格式不统一的风险,建议先解析为标准时间类型再处理,避免字符串处理出错:
library(lubridate) # 先解析为时分秒类型,再提取小时、分钟拼接为目标整数 df1$Time <- as.integer(hour(hms(df1$Time)) * 100 + minute(hms(df1$Time)))
三种方案运行后都可以得到你需要的输出结果。
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

