當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R lubridate as.period 將對象更改為句點


as.period 將 Interval、Duration、difftime 和 numeric 類對象更改為具有指定單位的 period 類對象。

用法

as.period(x, unit, ...)

參數

x

間隔、差異時間或數字對象

unit

指定在哪些時間單位中構建周期的字符串。unit 僅針對as.period.numeric 方法和as.period.interval 方法實現。對於as.period.interval,as.period會將間隔轉換為不大於指定單位的單位。

...

傳遞給as.period的附加參數

一個時期的對象

細節

用戶必須指定用哪些時間單位來測量該時間段。時間段中每個時間單位的確切長度將取決於它發生的時間。請參閱Periodperiod()。單位的選擇並非無足輕重。通常相等的單位長度可能會有所不同,具體取決於時間段發生的時間。例如,當發生閏秒時,一分鍾比 60 秒長。

由於周期沒有固定長度,因此無法在 Duration 對象之間準確地進行轉換。 Duration 對象以精確的秒數測量時間跨度,請參閱 Duration 。因此,持續時間和周期之間不存在一對一的映射。當與 Duration 對象一起使用時,as.period 提供不精確的估計;持續時間根據最常見的時間單位長度(以秒為單位)分為時間單位。由於月份的長度特別可變,因此不能從持續時間對象中強製得出以月份為單位的期間。對於精確轉換,首先使用 as.interval() 將持續時間轉換為間隔。

如果您請求具有小單位的周期,則將時間間隔強製為周期可能會導致令人驚訝的行為。閏年有 366 天,但一年長。當單位設置為天時,此間隔將轉換為 366 天;當單位設置為年時,此間隔將轉換為 1 年。在日期上添加 366 天通常會得到與添加一年不同的結果。夏令時是這一規定不適用的一個例外。間隔長度根據 UTC 時間線計算,不使用夏令時。因此,以秒或分鍾轉換的周期不會反映夏令時導致的秒和分鍾的實際變化。這些周期將顯示 "naive" 以秒和分鍾為單位的變化,這是由時鍾時間的差異所表明的。請參閱下麵的示例。

也可以看看

例子

span <- interval(ymd_hms("2009-01-01 00:00:00"), ymd_hms("2010-02-02 01:01:01")) # interval
as.period(span)
#> [1] "1y 1m 1d 1H 1M 1S"
as.period(span, unit = "day")
#> [1] "397d 1H 1M 1S"
"397d 1H 1M 1S"
#> [1] "397d 1H 1M 1S"
leap <- interval(ymd("2016-01-01"), ymd("2017-01-01"))
as.period(leap, unit = "days")
#> [1] "366d 0H 0M 0S"
as.period(leap, unit = "years")
#> [1] "1y 0m 0d 0H 0M 0S"
dst <- interval(
  ymd("2016-11-06", tz = "America/Chicago"),
  ymd("2016-11-07", tz = "America/Chicago")
)
# as.period(dst, unit = "seconds")
as.period(dst, unit = "hours")
#> [1] "25H 0M 0S"
per <- period(hours = 10, minutes = 6)
as.numeric(per, "hours")
#> [1] 10.1
as.numeric(per, "minutes")
#> [1] 606
源代碼:R/coercion.r

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Change an object to a period。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。