This collection of S3 methods 'resolve' messy dates into a single date according to some explicit bias, such as returning the minimum or maximum date, the mean, median, or modal date, or a random date from among the possible resolutions for each messy date. If the date is not 'messy' (i.e. has no annotations) then just that precise date is returned. This can be useful for various descriptive or inferential projects.

# S3 method for mdate
min(..., na.rm = TRUE)

# S3 method for mdate
max(..., na.rm = TRUE)

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

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

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

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

random(..., size, replace = FALSE, prob = NULL)

# S3 method for mdate
random(..., size, replace = FALSE, prob = NULL)

## Arguments

...

a mdate object

na.rm

Should NAs be removed? True 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.

size

a non-negative integer giving the number of items to choose.

replace

should sampling be with replacement?

prob

a vector of probability weights for obtaining the elements of the vector being sampled.

## Value

A single scalar or vector of dates

## 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"))
d
#>  'mdate' chr [1:8] "2008-03-25" "?2012-02-27" "2001-01?" "~2001" ...
min(d)
#> [1] "2008-03-25" "2012-02-27" "2001-01-01" "2001-01-01" "2001-01-01"
#> [6] "2001-01-01" "2001-01-01" "2008-01-31"
max(d)
#> [1] "2008-03-25" "2012-02-27" "2001-01-31" "2001-12-31" "2001-02-02"
#> [6] "2001-02-02" "2001-02-02" "2008-12-31"
mean(d)
#> [1] "2008-03-25" "2012-02-27" "2001-01-16" "2001-07-02" "2001-01-17"
#> [6] "2001-01-17" "2001-01-16" "2008-07-15"
median(d)
#> [1] "2008-03-25" "2012-02-27" "2001-01-16" "2001-07-02" "2001-01-17"
#> [6] "2001-02-02" "2001-01-17" "2008-07-31"
modal(d)
#> [1] "2008-03-25" "2012-02-27" "2001-01-01" "2001-01-01" "2001-01-01"
#> [6] "2001-01-01" "2001-01-01" "2008-01-31"
random(d)
#> [1] "2008-03-25" "2012-02-27" "2001-01-22" "2001-07-04" "2001-01-21"
#> [6] "2001-01-01" "2001-01-09" "2008-08-31"