resolve_tendency: Resolves messy dates into a central tendency

resolve_tendencyR Documentation

Resolves messy dates into a central tendency

Description

These functions resolve messydates by their central tendency. While the functions mean(), median(), and modal() expand all elements of the vector into one combined set of dates and summarise it to a single value (matching the usual behaviour of these generics), the ⁠v*()⁠ versions resolve each element separately and so return a vector of the same length as the input.

Usage

## S3 method for class 'mdate'
median(..., na.rm = TRUE)

vmedian(..., na.rm = TRUE)

## S3 method for class 'mdate'
vmedian(..., na.rm = TRUE)

## S3 method for class 'mdate'
mean(..., trim = 0, na.rm = TRUE)

vmean(..., na.rm = TRUE)

## S3 method for class 'mdate'
vmean(..., trim = 0, na.rm = TRUE)

modal(..., na.rm = TRUE)

## S3 method for class 'mdate'
modal(..., na.rm = TRUE)

vmodal(..., na.rm = TRUE)

## S3 method for class 'mdate'
vmodal(..., na.rm = TRUE)

random(..., na.rm = TRUE)

## S3 method for class 'mdate'
random(..., na.rm = TRUE)

vrandom(..., na.rm = TRUE)

## S3 method for class 'mdate'
vrandom(..., na.rm = TRUE)

Arguments

...

a mdate object

na.rm

Should NAs be removed? FALSE by default.

trim

the fraction (0 to 0.5) of observations to be trimmed from each end of x before the mean is computed. Values of trim outside that range are taken as the nearest endpoint.

Details

All of these functions work by calling expand() to enumerate the dates or date-times consistent with each messy value, then summarising that expanded set. For median() and mean(), an even number of expanded values is resolved by averaging the two middle values (via POSIXct when a time of day is present, or Date otherwise); an odd number simply returns the middle value.

Averaging across the BCE/CE boundary, or between two BCE dates, is not currently supported: median() falls back to the earlier of the two middle values in that case, and mean()/vmean() may be unreliable for solely negative-year inputs (a documented limitation, not a supported feature).

Examples

d <- as_messydate(c("2008-03-25", "?2012-02-27", "2001-01?", "2001~",
  "2001-01-01..2001-02-02", "{2001-01-01,2001-02-02}",
  "{2001-01,2001-02-02}", "2008-XX-31", "-0050-01-01"))
d
# the time of day is honoured when averaging precise date-times
r <- as_messydate(c("2012-06-01 09:00", "2012-06-01 17:00"))
median(r)
mean(r)
median(d)
vmedian(d)
mean(d)
vmean(d)
modal(d)
vmodal(d)
random(d)
vrandom(d)

messydates documentation built on July 17, 2026, 1:07 a.m.