将数值变量转换为 R 中的时间变量

Convert Numeric Variable into Time variable in R

我有 hh:mm 1. However when I read the data using read excel (readxl) it appeared as numeric 2 格式的加载时间。所以我想将这些值转换为 hh:mm agian 中的时间,或者有什么方法可以在不转换为数字的情况下读取此文件。

as.POSIXlt(0.2743) as.POSIXlt.numeric(0.2743) 中的错误:必须提供 'origin'

您可以使用 hms::hms:

library(hms)

hms(days = 0.2743)
#> 06:34:59.52

hms(days = 0.31597)
#> 07:34:59.808

hms(days = 1)
#> 24:00:00

classPOSIXlt的对象也包含日期部分,如果提供数字输入,我们需要指定从哪个起点开始计算秒数,例如:

## 1 minute from 1970-01-01 00:00:00 UTC
as.POSIXlt(60, origin = "1970-01-01", tz = "UTC")
#> [1] "1970-01-01 00:01:00 UTC"

或者,如果输出格式应为 hh:mm,而不是 hms 函数中的 hh:mm:ss,我们可以使用 formatas.POSIXlt 和一个虚拟原点:

format(as.POSIXlt(0.2743 * 3600 * 24, origin = Sys.Date(), tz = "UTC"), "%H:%M")
#> [1] "06:34"

format(as.POSIXlt(0.31597 * 3600 * 24, origin = Sys.Date(), tz = "UTC"), "%H:%M")
#> [1] "07:34"