当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。