将数值变量转换为 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
,我们可以使用 format
和 as.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"
我有 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
,我们可以使用 format
和 as.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"