chop_quantiles()
and brk_quantiles()
gain
a new weights
argument, letting you chop by weighted
quantiles using Hmisc::wtd.quantile()
.brk_quantiles()
may now return singleton breaks,
producing more accurate results when x
has duplicate
elements.raw
argument to lbl_*
functions now always
gives a deprecation warning.fmt
in lbl_*
functions
will be taken as arguments to base::format
. This gives more
flexibility in formatting, e.g., units
breaks.chop_n()
gains a tail
argument, to deal
with a last interval containing less than n
elements. Set
tail = "merge"
to merge it with the previous interval. This
guarantees that all intervals contain at least n
elements.chop_equally()
may return fewer than
groups
groups when there are duplicate elements. We now
warn when this happens.chop_n()
could return intervals with fewer than
n
elements when there were duplicate elements. The new
algorithm avoids this, but may be slower in this case.endpoint_labels()
methods gain an unused
...
argument to satisfy R CMD CHECK.There are important changes to close_end
.
close_end
is now TRUE
by default in
chop()
and fillet()
. In previous versions:
chop(1:2, 1:2)
## [1] [1, 2) {2}
## Levels: [1, 2) {2}
Whereas now:
chop(1:2, 1:2)
## [1] [1, 2] [1, 2]
## Levels: [1, 2]
close_end
is now always applied after
extend
. For example, in previous versions:
chop(1:4, 2:3, close_end = TRUE)
## [1] [1, 2) [2, 3] [2, 3] (3, 4]
## Levels: [1, 2) [2, 3] (3, 4]
Whereas now:
chop(1:4, 2:3, close_end = TRUE)
## [1] [1, 2) [2, 3) [3, 4] [3, 4]
## Levels: [1, 2) [2, 3) [3, 4]
We changed this behaviour to be more in line with user expectations.
If breaks
has names, they will be used as
labels:
chop(1:5, c(Low = 1, Mid = 2, High = 4))
## [1] Low Mid Mid High High
## Levels: Low Mid High
Names can also be used for labels in probs
in
chop_quantiles()
and proportions
in
chop_proportions()
.
There is a new raw
parameter to chop()
.
This replaces the parameter raw
in lbl_*
functions, which is now soft-deprecated.
lbl_manual()
is deprecated. Just use a vector
argument to labels
instead.
A labels
argument to chop_quantiles()
now needs to be explicitly named.
I expect these to be the last important breaking changes before we release version 1.0 and mark the package as “stable”. If they cause problems for you, please file an issue.
chop_fn()
, brk_fn()
and
tab_fn()
chop using an arbitrary function.lbl_endpoint()
has been renamed to
lbl_endpoints()
. The old version will trigger a deprecation
warning. lbl_endpoints()
gains first
,
last
and single
arguments like other labelling
functions.chop_pretty()
, brk_pretty()
and
tab_pretty()
functions use base::pretty()
to
calculate attractive breakpoints. Thanks @davidhodge931.chop_proportions()
, brk_proportions()
and tab_proportions()
functions chop x
into
proportions of its range.chop_equally()
now uses
lbl_intervals(raw = TRUE)
by default, bringing it into line
with chop_evenly()
, chop_width()
and
chop_n()
.lbl_midpoints()
function labels breaks by their
midpoints.lbl_discrete()
gains a single
argument.ts
, xts::xts
and
zoo::zoo
objects.chop()
is more forgiving when mixing different types,
e.g.:
Date
objects with POSIXct
breaks, and vice
versabit64::integer64
and double
slbl_discrete()
sometimes had ugly label
formatting.first
and last
arguments are now passed to glue::glue()
. Variables
l
and r
represent the left and right endpoints
of the intervals.chop_mean_sd()
now takes a vector sds
of
standard deviations, rather than a single maximum number sd
of standard deviations. Write e.g. chop_mean_sd(sds = 1:3)
rather than chop_mean_sd(sd = 3)
. The sd
argument is deprecated.groups
argument to chop_evenly()
,
deprecated in 0.4.0, has been removed.brk_left()
and brk_right()
, deprecated in
0.4.0, have been removed.knife()
, deprecated in 0.4.0, has been removed.lbl_format()
, questioning since 0.4.0, has been
removed.lbl_dash()
and
lbl_intervals()
have been reordered for consistency with
other labelling functions.units
from
the units
package, difftime
objects,
package_version
objects, etc.
{glue}
package has become a hard dependency. It is
used in many places to format labels.lbl_glue()
function using the
{glue}
package. Thanks to @dpprdan.labels = NULL
to return integer
codes.first
, last
and
single
can be used in lbl_intervals()
and
lbl_dash()
, to override the first and last interval labels,
or to label singleton intervals.lbl_dash()
and lbl_discrete()
use unicode
em-dash where possible.brk_default()
throws an error if breaks are not
sorted.tab()
and friends no longer display an
x
as the variable name.lbl_endpoint()
was erroring for some types of
breaks.New arguments first
and last
in
lbl_dash()
and lbl_discrete()
allow you to
override the first and last interval labels.
Fixes for CRAN.
chop_width()
.
left = FALSE
by default.chop(1:4, 1)
was erroring.The new version has some interface changes. These are based on user
experience, and are designed to make using chop()
more
intuitive and predictable.
chop()
has two new arguments, left
and
close_end
.
left = FALSE
is simpler and more intuitive than
wrapping breaks in brk_right()
.brk_left()
and brk_right()
have been kept
for now, but cannot be used to wrap other break functions.close_end
is simpler than passing
close_end
into brk_left()
or
brk_right()
(which no longer accept this argument
directly).left = TRUE
by default, except for non-numeric objects
in chop_quantiles()
and chop_equally()
, where
left = FALSE
works better.close_end
is now FALSE
by default.
chop(3, 1:3)
puts 3
into a different category than
chop(3, 1:4)
.close_end
is TRUE
by default for
chop_quantiles()
, chop_n()
and similar
functions. This ensures that e.g.
chop_quantiles(x, c(0, 1/3, 2/3, 1))
does what you would
expect.The groups
argument to chop_evenly()
has been renamed from groups
to intervals
.
This should make it easier to remember the difference between
chop_evenly()
and chop_equally()
. (Chop evenly
into n
equal-width intervals, or chop equally into
n
equal-sized groups.)
knife()
has been deprecated to keep the interface
slim and focused. Use purrr::partial()
instead.
Date and datetime (POSIXct
) objects can now be
chopped.
chop_width()
accepts difftime
,
lubridate::period
or lubridate::duration
objectschop_
functions work as well.Many labelling functions have a new fmt
argument.
This can be a string interpreted by sprintf()
or
format()
, or a 1-argument formatting function for break
endpoints, e.g. scales::label_percent()
.
Experimental: lbl_discrete()
for discrete data such
as integers or (most) dates.
There is a new lbl_endpoint()
function for labelling
intervals solely by their left or right endpoint.
brk_mean_sd()
now accepts non-integer positive
numbers.
Add brk_equally()
for symmetry with
chop_equally()
.
Minor tweaks to chop_deciles()
.
Bugfix: lbl_format()
wasn’t accepting numeric
formats, even when raw = TRUE
. Thanks to Sharla
Gelfand.
First CRAN release.
Changed kut()
to kiru()
.
kiru()
is an alternative spelling for chop()
,
for use when the tidyr package is loaded.
lbl_sequence()
has become
lbl_manual()
.
lbl_letters()
and friends have been replaced by
lbl_seq()
:
lbl_letters()
use
lbl_seq()
lbl_LETTERS()
use
lbl_seq("A")
lbl_roman()
use
lbl_seq("i")
lbl_ROMAN()
use
lbl_seq("I")
lbl_numerals()
use
lbl_seq("1")
lbl_seq("A:")
,
lbl_seq("(i)")
Added a NEWS.md
file to track changes to the
package.
Default labels when extend = NULL
have changed, from
[-Inf, ...
and ..., Inf]
to
[min(x), ...
and ..., max(x)]
.