簡體   English   中英

如何將保存為 integer 的時間間隔轉換為 R 中的日期 object?

[英]How to convert a time interval saved as an integer to a date object in R?

我有一個帶有 integer 變量的數據集,該變量表示在一整天中以 5 分鍾間隔進行的觀察,但是當它計數到 55 時,它會增加小時。 所以跟隨“55”是“100”,然后是“105”......並且跟隨“955”是“1000”。 本質上它是一個 hh:mm 24 小時制,但省略了前面的零。 我需要將這些轉換為時間對象,但在 lubridate package 中沒有找到簡單的 function。

我最后的辦法是將此變量轉換為字符串,使用“if”循環將 3、2 或 1 個零粘貼到每個零上,這樣我就可以調用 parse_date_time(data$interval, "H?M!") 但我'想知道是否有我不知道的更優雅的解決方案?

使用sprintf將 integer 轉換為定寬字符串,再轉換為時間 object。

x <- c(50, 55, 100, 105, 955, 1000)
as.POSIXct(sprintf("%04d", x), format = "%H%M", tz = "UTC")

#[1] "2019-11-04 00:50:00 UTC" "2019-11-04 00:55:00 UTC" "2019-11-04 01:00:00 UTC"
#[4] "2019-11-04 01:05:00 UTC" "2019-11-04 09:55:00 UTC" "2019-11-04 10:00:00 UTC"

使用stringr::str_padstrptime也可以實現類似的結果

strptime(stringr::str_pad(x, 4, pad = 0), format = "%H%M", tz = "UTC")

或使用parse_date_time

lubridate::parse_date_time(sprintf("%04d", x), "HM")

暫無
暫無

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

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