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


R lubridate period 创建或解析周期对象


period() 使用指定值创建或解析周期对象。

用法

period(num = NULL, units = "second", ...)

is.period(x)

seconds(x = 1)

minutes(x = 1)

hours(x = 1)

days(x = 1)

weeks(x = 1)

years(x = 1)

milliseconds(x = 1)

microseconds(x = 1)

nanoseconds(x = 1)

picoseconds(x = 1)

# S3 method for numeric
months(x, abbreviate)

参数

num

数字或字符向量。字符向量可以以方便的速记格式或 ISO 8601 规范指定句点。支持所有明确的名称单位和缩写,"m" 代表月,"M" 代表分钟,除非存在 ISO 8601 "P" 修饰符(请参阅示例)。支持小数单位,但小数部分始终转换为秒。

units

列出要使用的单位类型的字符向量。 units 中的单位按照顺序与 num 中的值进行匹配。当num 为字符时,该参数被忽略。

...

要包含在该期间内的时间单位及其数量的列表。支持秒、分钟、小时、天、周、月和年。通常仅存在 num... 之一。如果两者都存在,则将句点连接起来。

x

is.periods 的任何 R 对象以及基本构造函数的单元数量的数值。除 seconds() 外,x 必须是整数。

abbreviate

被忽略了。为了与基本命名空间中的 S3 通用保持一致。

一个时期的对象

细节

在Period对象中,时间单位没有固定长度(秒除外),直到它们被添加到日期时间中。每个时间单位的长度将取决于添加它的日期时间。例如,从 2009-01-01 开始的一年将有 365 天。从 2012 年 1 月 1 日开始的一年将有 366 天。当使用 period 对象执行数学运算时,每个单位都会单独应用。一个周期的长度如何在其单位之间分配是很重要的。例如,当闰秒发生时,1 分钟比 60 秒长。

周期跟踪两个日期时间之间 "clock time" 的变化。它们以常见的时间相关单位进行测量:年、月、日、小时、分钟和秒。除秒外的每个单位都必须以整数值表示。

除了主构造函数和解析器 period() 之外,还可以使用专用函数创建周期对象: years()months()weeks()days()hours()minutes()seconds() 。这些对象可以添加到日期时间或从中减去,以创建类似于面向对象编程的用户接口。

注意:当涉及不存在的日期时(例如非闰年的 2 月 29 日),带句点的算术可能会导致未定义的行为。有关更多详细信息,请参阅Period,有关替代操作,请参阅%m+%add_with_rollback()

也可以看看

例子


### Separate period and units vectors

period(c(90, 5), c("second", "minute"))
#> [1] "5M 90S"
#  "5M 90S"
period(-1, "days")
#> [1] "-1d 0H 0M 0S"
period(c(3, 1, 2, 13, 1), c("second", "minute", "hour", "day", "week"))
#> [1] "20d 2H 1M 3S"
period(c(1, -60), c("hour", "minute"))
#> [1] "1H -60M 0S"
period(0, "second")
#> [1] "0S"

### Units as arguments

period(second = 90, minute = 5)
#> [1] "5M 90S"
period(day = -1)
#> [1] "-1d 0H 0M 0S"
period(second = 3, minute = 1, hour = 2, day = 13, week = 1)
#> [1] "20d 2H 1M 3S"
period(hour = 1, minute = -60)
#> [1] "1H -60M 0S"
period(second = 0)
#> [1] "0S"
period(c(1, -60), c("hour", "minute"), hour = c(1, 2), minute = c(3, 4))
#> [1] "1H -60M 0S" "1H 3M 0S"   "2H 4M 0S"  

### Lubridate style parsing

period("2M 1sec")
#> [1] "2M 1S"
period("2hours 2minutes 1second")
#> [1] "2H 2M 1S"
period("2d 2H 2M 2S")
#> [1] "2d 2H 2M 2S"
period("2days 2hours 2mins 2secs")
#> [1] "2d 2H 2M 2S"
period("2 days, 2 hours, 2 mins, 2 secs")
#> [1] "2d 2H 2M 2S"
# Missing numerals default to 1. Repeated units are added up.
duration("day day")
#> [1] "172800s (~2 days)"

### ISO 8601 parsing

period("P10M23DT23H") # M stands for months
#> [1] "10m 23d 23H 0M 0S"
period("10DT10M") # M stands for minutes
#> [1] "10d 0H 10M 0S"
period("P3Y6M4DT12H30M5S") # M for both minutes and months
#> [1] "3y 6m 4d 12H 30M 5S"
period("P23DT60H 20min 100 sec") # mixing ISO and lubridate style parsing
#> [1] "23d 60H 20M 100S"

### Comparison with characters (from v1.6.0)

duration("day 2 sec") > "day 1sec"
#> [1] TRUE

### Elementary Constructors

x <- ymd("2009-08-03")
x + days(1) + hours(6) + minutes(30)
#> [1] "2009-08-04 06:30:00 UTC"
x + days(100) - hours(8)
#> [1] "2009-11-10 16:00:00 UTC"

class(as.Date("2009-08-09") + days(1)) # retains Date class
#> [1] "Date"
as.Date("2009-08-09") + hours(12)
#> [1] "2009-08-09 12:00:00 UTC"
class(as.Date("2009-08-09") + hours(12))
#> [1] "POSIXct" "POSIXt" 
# converts to POSIXt class to accomodate time units

years(1) - months(7)
#> [1] "1y -7m 0d 0H 0M 0S"
c(1:3) * hours(1)
#> [1] "1H 0M 0S" "2H 0M 0S" "3H 0M 0S"
hours(1:3)
#> [1] "1H 0M 0S" "2H 0M 0S" "3H 0M 0S"

# sequencing
y <- ymd(090101) # "2009-01-01 CST"
y + months(0:11)
#>  [1] "2009-01-01" "2009-02-01" "2009-03-01" "2009-04-01" "2009-05-01"
#>  [6] "2009-06-01" "2009-07-01" "2009-08-01" "2009-09-01" "2009-10-01"
#> [11] "2009-11-01" "2009-12-01"

# compare DST handling to durations
boundary <- ymd_hms("2009-03-08 01:59:59", tz = "America/Chicago")
boundary + days(1) # period
#> [1] "2009-03-09 01:59:59 CDT"
boundary + ddays(1) # duration
#> [1] "2009-03-09 02:59:59 CDT"
is.period(as.Date("2009-08-03")) # FALSE
#> [1] FALSE
is.period(period(months = 1, days = 15)) # TRUE
#> [1] TRUE
源代码:R/periods.r

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Create or parse period objects。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。