% File src/library/base/man/grouping.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2016 R Core Team
% Distributed under GPL 2 or later

\name{grouping}
\title{Grouping Permutation}
\alias{grouping}
\concept{aggregation}
\description{
  \code{grouping} returns a permutation which rearranges its first
  argument such that identical values are adjacent to each other.  Also
  returned as attributes are the group-wise partitioning and the maximum
  group size.
}
\usage{
grouping(\dots)
}
\arguments{
  \item{\dots}{a sequence of numeric, character or logical
    vectors, all of the same length, or a classed \R object.}
}
\details{
  The function partially sorts the elements so that identical values are
  adjacent. \code{NA} values come last.  This is guaranteed to be
  stable, so ties are preserved, and if the data are already
  grouped/sorted, the grouping is unchanged.  This is useful for
  aggregation and is particularly fast for character vectors.

  Under the covers, the \code{"radix"} method of \code{\link{order}} is
  used, and the same caveats apply, including restrictions on character
  encodings and lack of support for \link{long vectors} (those with
  \eqn{2^{31}}{2^31} or more elements). Real-valued numbers are slightly
  rounded to account for numerical imprecision.
  
  Like \code{order}, for a classed \R object the grouping is based on
  the result of \code{\link{xtfrm}}.
}

\value{
  An object of class \code{"grouping"}, the representation of which
  should be considered experimental and subject to change.  It is an
  integer vector with two attributes:
  \item{ends}{subscripts in the result corresponding to the last
    member of each group}
  \item{maxgrpn}{the maximum group size}
}

\seealso{
  \code{\link{order}}, \code{\link{xtfrm}}.
}
\examples{
(ii <- grouping(x <- c(1, 1, 3:1, 1:4, 3), y <- c(9, 9:1), z <- c(2, 1:9)))
## 6  5  2  1  7  4 10  8  3  9
rbind(x, y, z)[, ii]
}
\keyword{manip}
