# cut.POSIXt

##### Convert a Date or Date-Time Object to a Factor

Method for `cut`

applied to date-time objects.

##### Usage

```
# S3 method for POSIXt
cut(x, breaks, labels = NULL, start.on.monday = TRUE,
right = FALSE, …)
```# S3 method for Date
cut(x, breaks, labels = NULL, start.on.monday = TRUE,
right = FALSE, …)

##### Arguments

- x
an object inheriting from class

`"POSIXt"`

or`"Date"`

.- breaks
a vector of cut points

*or*number giving the number of intervals which`x`

is to be cut into*or*an interval specification, one of`"sec"`

,`"min"`

,`"hour"`

,`"day"`

,`"DSTday"`

,`"week"`

,`"month"`

,`"quarter"`

or`"year"`

, optionally preceded by an integer and a space, or followed by`"s"`

. (For`"Date"`

objects only interval specifications using`"day"`

,`"week"`

,`"month"`

,`"quarter"`

and`"year"`

are allowed.)- labels
labels for the levels of the resulting category. By default, labels are constructed from the left-hand end of the intervals (which are included for the default value of

`right`

). If`labels = FALSE`

, simple integer codes are returned instead of a factor.- start.on.monday
logical. If

`breaks = "weeks"`

, should the week start on Mondays or Sundays?- right, …
arguments to be passed to or from other methods.

##### Details

Note that the default for `right`

differs from the
default method. Using ```
include.lowest =
TRUE
```

will include both ends of the range of dates.

Using `breaks = "quarter"`

will create intervals of 3 calendar
months, with the intervals beginning on January 1, April 1,
July 1 or October 1 (based upon `min(x)`

) as appropriate.

A vector of `breaks`

will be sorted before use: `labels`

should
correspond to the sorted vector.

##### Value

A factor is returned, unless `labels = FALSE`

which returns
the integer level codes.

Values which fall outside the range of `breaks`

are coded as
`NA`

, as are and `NA`

values.

##### See Also

##### Examples

`library(base)`

```
# NOT RUN {
## random dates in a 10-week period
cut(ISOdate(2001, 1, 1) + 70*86400*stats::runif(100), "weeks")
cut(as.Date("2001/1/1") + 70*stats::runif(100), "weeks")
# The standards all have midnight as the start of the day, but some
# people incorrectly interpret it at the end of the previous day ...
tm <- seq(as.POSIXct("2012-06-01 06:00"), by = "6 hours", length.out = 24)
aggregate(1:24, list(day = cut(tm, "days")), mean)
# and a version with midnight included in the previous day:
aggregate(1:24, list(day = cut(tm, "days", right = TRUE)), mean)
# }
```

*Documentation reproduced from package base, version 3.6.0, License: Part of R 3.6.0*