R读取含时间列的数据集时时间被转为十进制数,如何保留HH:mm:ss格式?
R语言保留时间HH:mm:ss格式解决方案
你之前代码出错的核心原因
- 时间格式占位符写法错误:R中时间格式的占位符需要加前缀
%,你使用的h:m:s无法被系统识别,正确写法为%H:%M:%S(%H代表24小时制小时,%M代表分钟,%S代表秒) - 函数使用不当:
as.Date仅处理日期数据,会自动丢弃时分秒部分,不适合纯时间列的处理 - 存在语法错误:你最后一行
chron调用代码缺少右括号,会直接触发语法报错
适用的解决方法
方法1:用chron包处理(适合纯时间列)
如果你的时间列是从Excel导入的数值型数据(Excel内部以天的小数存储时间,比如0.25代表06:00:00),直接调用chron::times即可:
library(chron) # 直接传入数值列即可,无需提前转字符 time_col <- times(FeData_18[, 3])
如果导入的是字符串格式的时间,修改format参数即可:
time_col <- times(as.character(FeData_18[, 3]), format = "%H:%M:%S")
方法2:用lubridate包处理(对初学者更友好)
lubridate包的函数参数更简洁,不易出错:
library(lubridate) # 自动识别常见的时间字符串格式,返回hms类型时间,支持后续时间计算 time_col <- hms(as.character(FeData_18[, 3])) # 如果仅需要展示为HH:mm:ss格式的字符串,调用format转换即可 time_str <- format(time_col, "%H:%M:%S")
前置优化建议
读入Excel数据时就指定列类型,避免后续格式转换出错,用readxl包实现:
library(readxl) # 把第三个列的类型指定为date,读入后自动保留时间信息 FeData_18 <- read_excel("你的文件路径.xlsx", col_types = c("其他列1类型", "其他列2类型", "date"))
内容的提问来源于stack exchange,提问作者rod22
相关产品推荐
相关产品推荐

