These methods coerce various date classes into the mdate
class.
They represent the main user-facing class-creating functions in the package.
In addition to the typical date classes in R (Date
, POSIXct
, and POSIXlt
),
there is also a direct method for converting text or character strings to mdate
.
The function can also extract dates from text,
though this is a work-in-progress and currently only works in English.
as_messydate(x, resequence = FALSE)
# S3 method for Date
as_messydate(x, resequence = FALSE)
# S3 method for POSIXct
as_messydate(x, resequence = FALSE)
# S3 method for POSIXlt
as_messydate(x, resequence = FALSE)
# S3 method for character
as_messydate(x, resequence = NULL)
# S3 method for list
as_messydate(x, resequence = FALSE)
mdate(x, resequence = FALSE)
make_messydate(..., resequence = FALSE)
A scalar or vector of a class that can be coerced into mdate
,
such as Date
, POSIXct
, POSIXlt
, or character.
Users have the option to choose the order for
ambiguous dates with or without separators (e.g. "11-01-12" or "20112112").
NULL
by default.
Other options include: 'dmy', 'ymd', 'mdy', 'ym', 'my' and 'interactive'
If 'dmy', dates are converted from DDMMYY format for 6 digit dates,
or DDMMYYYY format for 8 digit dates.
If 'ymd', dates are converted from YYMMDD format for 6 digit dates,
or YYYYMMDD format for 8 digit dates.
If 'mdy', dates are converted from MMDDYY format for 6 digit dates
or MMDDYYYY format for 8 digit dates.
For these three options, ambiguous dates are converted to YY-MM-DD format
for 6 digit dates, or YYYY-MM-DD format for 8 digit dates.
If 'my', ambiguous 6 digit dates are converted from MM-YYYY format
to YYYY-MM.
If 'ym', ambiguous 6 digit dates are converted to YYYY-MM format.
If 'interactive', it prompts users to select the existing
component order of ambiguous dates,
based on which the date is reordered into YYYY-MM-DD format
and further completed to YYYY-MM-DD format if they choose to do so.
One (yyyy-mm-dd), two (yyyy-mm-dd, yyyy-mm-dd), or three (yyyy, mm, dd) variables.
A mdate
class object
If three date variables are passed to make_messydate()
,
function will create a single date (yyyy-mm-dd) from it.
If two date variables are passed to make_messydate()
,
function will create a range of dates from it (yyyy-mm-dd..yyyy-mm-dd).
If one date variable is passed to make_messydate()
,
function defaults to as_messydate()
.
as_messydate()
: Core mdate
class coercion function
as_messydate(Date)
: Coerce from Date
to mdate
class
as_messydate(POSIXct)
: Coerce from POSIXct
to mdate
class
as_messydate(POSIXlt)
: Coerce from POSIXlt
to mdate
class
as_messydate(character)
: Coerce character date objects to mdate
class
as_messydate(list)
: Coerce list date objects to the most concise
representation of mdate
class
make_messydate()
: Composes mdate
from multiple variables
as_messydate("2021")
#> 'mdate' chr "2021"
as_messydate("2021-02")
#> 'mdate' chr "2021-02"
as_messydate("2021-02-01")
#> 'mdate' chr "2021-02-01"
as_messydate("01-02-2021")
#> 'mdate' chr "2021-02-01"
as_messydate("1 February 2021")
#> 'mdate' chr "2021-02-01"
as_messydate("First of February, two thousand and twenty-one")
#> 'mdate' chr "2021-02-01"
as_messydate("2021-02-01?")
#> 'mdate' chr "2021-02-01?"
as_messydate("2021-02-01~")
#> 'mdate' chr "2021-02-01~"
as_messydate("2021-02-01%")
#> 'mdate' chr "2021-02-01%"
as_messydate("2021-02-01..2021-02-28")
#> 'mdate' chr "2021-02-01..2021-02-28"
as_messydate("{2021-02-01,2021-02-28}")
#> 'mdate' chr "{2021-02-01,2021-02-28}"
as_messydate(c("-2021", "2021 BC", "-2021-02-01"))
#> 'mdate' chr [1:3] "-2021" "-2021" "-2021-02-01"
as_messydate(c("210201", "20210201"), resequence = "ymd")
#> 'mdate' chr [1:2] "21-02-01" "2021-02-01"
as_messydate(c("010221", "01022021"), resequence = "dmy")
#> 'mdate' chr [1:2] "21-02-01" "2021-02-01"
# as_messydate(c("01-02-21", "01-02-2021", "01-02-91", "01-02-1991"),
# resequence = "interactive")
as_messydate(list(c("2012-06-01", "2012-06-02", "2012-06-03")))
#> [[1]]
#> 'mdate' chr "2012-06-01..2012-06-03"
#>
as_messydate(list(c("2012-06-01", "2012-06-02", "2012-06-03",
"{2012-06-01, 2012-06-02, 2012-06-03}", "2012-06-01", "2012-06-03")))
#> [[1]]
#> 'mdate' chr "{2012-06-01..2012-06-03,2012-06-01..2012-06-03,2012-06-01,2012-06-03}"
#>
make_messydate("2010", "10", "10")
#> 'mdate' chr "2010-10-10"