This help topic is for R version 0.60. For the current version of R, try https://stat.ethz.ch/R-manual/R-patched/library/base/html/cut.html
cut {base}R Documentation

Convert Numeric to Factor

Usage

cut(x, breaks, labels=NULL, right=TRUE, dig.lab=3)

Arguments

x

a numeric vector which is to be converted to a factor by cutting.

break

either a vector of cut points or number giving the number of intervals which x is to be cut into.

labels

labels for the levels of the resulting category. By default labels are constructed using "(a,b]" interval notation.

.

right

logical, indicating if the intervals should closed on the right (and open on the left) or vice versa.

dig.lab

integer which is used when labels are not given. It determines the number of digits used in formatting the break numbers.

Value

cut divides the range of x into intervals and codes the values in x according to which interval they fall. The leftmost interval corresponds to level one, the next leftmost to level two and so on. If a labels parameter is specified, its values are used to name the factor levels. If none is specified, the factor level labels are constructed as "(b1, b2]", "(b2, b3]" etc. for right=TRUE and as "[b1, b2)", ... if right=FALSE. In this case, dig.lab indicates how many digits should be used in formatting the numbers b1, b2, ....

See Also

split for splitting a variable according to a group factor; factor, tabulate, table.

Examples

cut(rep(1,5),4)#-- dummy
tx0 <- c(9, 4, 6, 5, 3, 10, 5, 3, 5)
x <- rep(0:8, tx0)
tx <- table(x)
all(tx == tx0)
table( cut(x, b = 8))
table( cut(x, br = 3*(-2:5)))
table( cut(x, br = 3*(-2:5), right = F))

##--- some values OUTSIDE the breaks :
table(cx  <- cut(x, br = 2*(0:4)))
table(cxl <- cut(x, br = 2*(0:4), right = F))
which(is.na(cx));  x[is.na(cx)]  #-- the first 9  values  0
which(is.na(cxl)); x[is.na(cxl)] #-- the last  5  values  8

## Label construction:
y <- rnorm(100)
table(cut(y, breaks = pi/3*(-3:3)))
table(cut(y, breaks = pi/3*(-3:3), dig.lab=4))

table(cut(y, breaks =  1*(-3:3), dig.lab=4))# extra digits don't "harm" here
table(cut(y, breaks =  1*(-3:3), right = F))#- the same, since no exact INT!

[Package base version 0.60 ]