create_series() allows the user to quickly create a tbl_time object with a date column populated with a sequence of dates.

create_series(time_formula, period = "daily", class = "POSIXct",
  include_end = FALSE, tz = "UTC", as_vector = FALSE)

Arguments

time_formula

A period to create the series over. This is specified as a formula. See the Details section of filter_time() for more information.

period

A character specification used for time-based grouping. The general format to use is "frequency period" where frequency is a number like 1 or 2, and period is an interval like weekly or yearly. There must be a space between the two.

Note that you can pass the specification in a flexible way:

  • 1 Year: '1 year' / '1 Y' / '1 yearly' / 'yearly'

This shorthand is available for year, quarter, month, day, hour, minute, second, millisecond and microsecond periodicities.

Additionally, you have the option of passing in a vector of dates to use as custom and more flexible boundaries.

class

One of "Date", "POSIXct", "hms", "yearmon", "yearqtr". The default is "POSIXct".

include_end

Whether to always include the RHS of the time_formula even if it does not match the regularly spaced index.

tz

Time zone of the new series.

as_vector

Should the series be returned as a vector instead of a tibble?

Examples

# Every day in 2013 create_series(~'2013', 'daily')
#> # A time tibble: 365 x 1 #> # Index: date #> date #> <dttm> #> 1 2013-01-01 00:00:00 #> 2 2013-01-02 00:00:00 #> 3 2013-01-03 00:00:00 #> 4 2013-01-04 00:00:00 #> 5 2013-01-05 00:00:00 #> 6 2013-01-06 00:00:00 #> 7 2013-01-07 00:00:00 #> 8 2013-01-08 00:00:00 #> 9 2013-01-09 00:00:00 #> 10 2013-01-10 00:00:00 #> # ... with 355 more rows
# Every other day in 2013 create_series(~'2013', '2 d')
#> # A time tibble: 183 x 1 #> # Index: date #> date #> <dttm> #> 1 2013-01-01 00:00:00 #> 2 2013-01-03 00:00:00 #> 3 2013-01-05 00:00:00 #> 4 2013-01-07 00:00:00 #> 5 2013-01-09 00:00:00 #> 6 2013-01-11 00:00:00 #> 7 2013-01-13 00:00:00 #> 8 2013-01-15 00:00:00 #> 9 2013-01-17 00:00:00 #> 10 2013-01-19 00:00:00 #> # ... with 173 more rows
# Every quarter in 2013 create_series(~'2013', '1 q')
#> # A time tibble: 4 x 1 #> # Index: date #> date #> <dttm> #> 1 2013-01-01 00:00:00 #> 2 2013-04-01 00:00:00 #> 3 2013-07-01 00:00:00 #> 4 2013-10-01 00:00:00
# Daily series for 2013-2015 create_series('2013' ~ '2015', '1 d')
#> # A time tibble: 1,095 x 1 #> # Index: date #> date #> <dttm> #> 1 2013-01-01 00:00:00 #> 2 2013-01-02 00:00:00 #> 3 2013-01-03 00:00:00 #> 4 2013-01-04 00:00:00 #> 5 2013-01-05 00:00:00 #> 6 2013-01-06 00:00:00 #> 7 2013-01-07 00:00:00 #> 8 2013-01-08 00:00:00 #> 9 2013-01-09 00:00:00 #> 10 2013-01-10 00:00:00 #> # ... with 1,085 more rows
# Minute series for 2 months create_series('2012-01' ~ '2012-02', 'M')
#> # A time tibble: 86,400 x 1 #> # Index: date #> date #> <dttm> #> 1 2012-01-01 00:00:00 #> 2 2012-01-01 00:01:00 #> 3 2012-01-01 00:02:00 #> 4 2012-01-01 00:03:00 #> 5 2012-01-01 00:04:00 #> 6 2012-01-01 00:05:00 #> 7 2012-01-01 00:06:00 #> 8 2012-01-01 00:07:00 #> 9 2012-01-01 00:08:00 #> 10 2012-01-01 00:09:00 #> # ... with 86,390 more rows
# Second series for 2 minutes create_series('2011-01-01 12:10:00' ~ '2011-01-01 12:12:00', 's')
#> # A time tibble: 121 x 1 #> # Index: date #> date #> <dttm> #> 1 2011-01-01 12:10:00 #> 2 2011-01-01 12:10:01 #> 3 2011-01-01 12:10:02 #> 4 2011-01-01 12:10:03 #> 5 2011-01-01 12:10:04 #> 6 2011-01-01 12:10:05 #> 7 2011-01-01 12:10:06 #> 8 2011-01-01 12:10:07 #> 9 2011-01-01 12:10:08 #> 10 2011-01-01 12:10:09 #> # ... with 111 more rows
# Date class create_series(~'2013', 'day', class = "Date")
#> # A time tibble: 365 x 1 #> # Index: date #> date #> <date> #> 1 2013-01-01 #> 2 2013-01-02 #> 3 2013-01-03 #> 4 2013-01-04 #> 5 2013-01-05 #> 6 2013-01-06 #> 7 2013-01-07 #> 8 2013-01-08 #> 9 2013-01-09 #> 10 2013-01-10 #> # ... with 355 more rows
# yearmon class create_series(~'2013', 'month', class = "yearmon")
#> # A time tibble: 12 x 1 #> # Index: date #> date #> <S3: yearmon> #> 1 Jan 2013 #> 2 Feb 2013 #> 3 Mar 2013 #> 4 Apr 2013 #> 5 May 2013 #> 6 Jun 2013 #> 7 Jul 2013 #> 8 Aug 2013 #> 9 Sep 2013 #> 10 Oct 2013 #> 11 Nov 2013 #> 12 Dec 2013
# hms class. time_formula specified as HH:MM:SS here create_series('00:00:00' ~ '12:00:00', 'second' , class = "hms")
#> # A time tibble: 43,201 x 1 #> # Index: date #> date #> <time> #> 1 00'00" #> 2 00'01" #> 3 00'02" #> 4 00'03" #> 5 00'04" #> 6 00'05" #> 7 00'06" #> 8 00'07" #> 9 00'08" #> 10 00'09" #> # ... with 43,191 more rows
# Subsecond series create_series('2013' ~ '2013-01-01 00:00:01', period = "10 millisec")
#> # A time tibble: 101 x 1 #> # Index: date #> date #> <dttm> #> 1 2013-01-01 00:00:00 #> 2 2013-01-01 00:00:00 #> 3 2013-01-01 00:00:00 #> 4 2013-01-01 00:00:00 #> 5 2013-01-01 00:00:00 #> 6 2013-01-01 00:00:00 #> 7 2013-01-01 00:00:00 #> 8 2013-01-01 00:00:00 #> 9 2013-01-01 00:00:00 #> 10 2013-01-01 00:00:00 #> # ... with 91 more rows
milli <- create_series('2013' ~ '2013-01-01 00:00:01', period = ".1 sec") # Check that 'milli' is correct by running: # options("digits.secs" = 4) # options("digits" = 18) # milli$date # as.numeric(milli$date)