簡體   English   中英

在R中將十進制數轉換為小時,時間或差異時間

[英]Convert decimal number double to hour, time, or difftime in R

我有一個雙精度矢量,用於指定一天中的小時數,例如下面給出的示例。 6.50對應於06:30hh:mm格式,依此類推。

ts <- c(6.50, 7.00, 7.25, 7.45, 8.00)

我想將其轉換為日期或時間格式。 我可以提出的解決方案涉及從數字中刪除小數位並將它們轉換為分鍾,但這感覺有點“hacky”,例如

library(lubridate)
hm(paste(floor(ts), (ts - floor(ts)) * 60, sep = ':'))

當然有更好的方法來做到這一點?

嘗試這個:

library(chron)

times(ts / 24)
## [1] 06:30:00 07:00:00 07:15:00 07:27:00 08:00:00

這也有效:

library(chron)
library(lubridate)

hms(times(ts/24))
## [1] "6H 30M 0S" "7H 0M 0S"  "7H 15M 0S" "7H 27M 0S" "8H 0M 0S" 

堅持只用lubridate

library(lubridate)
as.period(as.duration(days(x=1))*(ts/24))
# "6H 30M 0S" "7H 0M 0S"  "7H 15M 0S" "7H 27M 0S" "8H 0M 0S"
> lubridate::hm(ts)
[1] "6H 50M 0S" "7H 0M 0S"  "7H 25M 0S" "7H 45M 0S" "8H 0M 0S"

替代請求(您在問題中已有的內容):

> paste(floor(ts), round((ts-floor(ts))*60), sep=":")
[1] "6:30" "7:0"  "7:15" "7:27" "8:0"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM