Skip to contents

Create a set of labels for a time period based on the start and duration of the period. The format is configurable using the start and end dates and the dfmt and ifmt parameters, however if the time period has names then these are used in preference.

Usage

# S3 method for class 'time_period'
labels(
  object,
  ...,
  dfmt = "%d/%b",
  ifmt = "{start} — {end}",
  na.value = "Unknown"
)

Arguments

object

a set of decimal times as a time_period

...

not used

dfmt

a strptime format specification for the format of the date

ifmt

a glue spec referring to start and end of the period as a formatted date

na.value

a label for NA times

Value

a set of character labels for the time

Examples

eg = as.time_period(Sys.Date()+0:10*7, anchor="start")
#> No unit given. Guessing a sensible value from the dates gives: 7d 0H 0M 0S 
#> (N.B. this message will only be displayed once.)
labels(eg)
#>  [1] "04/Oct — 10/Oct" "11/Oct — 17/Oct" "18/Oct — 24/Oct" "25/Oct — 31/Oct"
#>  [5] "01/Nov — 07/Nov" "08/Nov — 14/Nov" "15/Nov — 21/Nov" "22/Nov — 28/Nov"
#>  [9] "29/Nov — 05/Dec" "06/Dec — 12/Dec" "13/Dec — 19/Dec"
labels(eg, ifmt="{start}", dfmt="%d/%b/%y")
#>  [1] "04/Oct/25" "11/Oct/25" "18/Oct/25" "25/Oct/25" "01/Nov/25" "08/Nov/25"
#>  [7] "15/Nov/25" "22/Nov/25" "29/Nov/25" "06/Dec/25" "13/Dec/25"
labels(eg, ifmt="until {end}", dfmt="%d %b %Y")
#>  [1] "until 10 Oct 2025" "until 17 Oct 2025" "until 24 Oct 2025"
#>  [4] "until 31 Oct 2025" "until 07 Nov 2025" "until 14 Nov 2025"
#>  [7] "until 21 Nov 2025" "until 28 Nov 2025" "until 05 Dec 2025"
#> [10] "until 12 Dec 2025" "until 19 Dec 2025"

# labels retained in constructor:
eg2 = Sys.Date()+0:10*7
names(eg2) = paste0("week ",0:10)
labels(eg2)
#>  [1] "week 0"  "week 1"  "week 2"  "week 3"  "week 4"  "week 5"  "week 6" 
#>  [8] "week 7"  "week 8"  "week 9"  "week 10"
labels(as.time_period(eg2, anchor="start"))
#>  [1] "week 0"  "week 1"  "week 2"  "week 3"  "week 4"  "week 5"  "week 6" 
#>  [8] "week 7"  "week 8"  "week 9"  "week 10"