binCounts: Fast element counting in non-overlapping bins
Description
Counts the number of elements in non-overlapping binsUsage
binCounts(x, idxs=NULL, bx, right=FALSE, ...)
Arguments
idxs
A vector
indicating subset of elements
to operate over. If NULL
, no subsetting is done. bx
A numeric
vector
of B+1 ordered positions specifying
the B > 0 bins [bx[1],bx[2])
, [bx[2],bx[3])
, ...,
[bx[B],bx[B+1])
. right
If TRUE
, the bins are right-closed (left open),
otherwise left-closed (right open). Value
Returns an integer
vector
of length B with non-negative integers.Missing and non-finite values
Missing values in x
are ignored/dropped.
Missing values in bx
are not allowed and gives an error.Details
binCounts(x, bx, right=TRUE)
gives equivalent results as
rev(binCounts(-x, bx=rev(-bx), right=FALSE))
, but is
faster and more memory efficient.See Also
An alternative for counting occurrences within bins is
hist
, e.g. hist(x, breaks=bx, plot=FALSE)$counts
.
That approach is ~30-60% slower than binCounts(..., right=TRUE)
. To count occurrences of indices x
(positive integer
s) in
[1,B]
, use tabulate(x, nbins=B)
, where x
does
not have to be sorted first.
For details, see tabulate
(). To average values within bins, see binMeans
().