Skip to content

Releases: tidyverse/forcats

forcats 1.0.0

30 Jan 15:09
Compare
Choose a tag to compare

New features

  • New fct_na_value_to_level() and fct_na_level_to_value() to convert
    NA values to NA levels and vice versa (#337).

Minor improvement and bug fixes

  • All functions now validate their inputs, giving more useful errors if you
    accidentally misspecify an input.

  • fct_collapse() can now use other_level = NA (#291).

  • fct_count() works with factors that contain NAs in levels.

  • fct_explicit_na() is deprecated in favour of fct_na_value_to_level().

  • fct_expand() gains an after argument so that you can choose where
    the new levels are placed (#138).

  • fct_infreq() gains the ability to weight by another variable using the w
    argument (#261).

  • fct_inorder() now works when not all levels appear in the data (#262).

  • fct_lump_prop() and friends now work correctly if you supply weights
    and have empty levels (#292).

  • fct_lump_n() and fct_lump_prop() will now create an "Other" level even
    if it only consists of a single level. This makes them consistent with the
    other fct_lump_* functions (#274).

  • fct_other() no longer generates a warning if no levels are replaced with
    other (#265).

  • fct_relevel(), fct_cross(), and fct_expand() now error if you name the
    arguments in ... since those names are ignored and your code probably
    doesn't do what you think it does (#319).

  • fct_reorder() and fct_reorder2() now remove NA values in .x with a
    warning (like ggplot2::geom_point() and friends). You can suppress the
    warning by setting .na_rm = TRUE (#315).

  • fct_reorder() and fct_reorder2() gain a new .default argument that
    controls the placement of empty levels (including levels that might become
    empty after removing missing values in .x) (#266).

  • fct_unique() now captures implicit missing values if present (#293).

forcats 0.5.2

20 Aug 12:24
Compare
Choose a tag to compare
  • New fct() which works like factor() but errors if values of x
    are not included in the levels specification (#299)

  • first2() and last2() now ignore missing values in both x and y (#303).

  • Error messages are more informative.

forcats 0.5.1

27 Jan 20:06
Compare
Choose a tag to compare

forcats 0.5.0

02 Mar 23:29
Compare
Choose a tag to compare
  • as_factor() gains a logical method that always returns a factor with
    levels "FALSE" and "TRUE" (#185).

  • fct_c(), fct_collapse() and fct_recode() are now explicitly
    documented as using dynamic dots
    (@labouz, #234).

  • fct_collapse() now accepts a other_level argument, to allow a
    user-specified Other level (@gtm19, #194). It now correctly collapses
    factors when other_level is not NULL (#172), and makes "Other" the
    last level (#202) (@gtm19, #172 & #202)

  • fct_count() no longer converts implicit NAs into explicit NAs (#151).

  • fct_inseq() behaves more robustly when factor levels aren't all numbers
    (#221).

  • fct_lump() has been split up into three new functions: fct_lump_prop(),
    fct_lump_n(), and fct_lump_lowfreq(). (@jonocarroll, #167, #142).
    All fct_lump_() functions check their inputs more carefully
    (@robinson_es, #169)

  • fct_reorder2() gains a helper function first2(), that sorts .y by the
    first value of .x (@jtr13).

forcats 0.4.0

17 Feb 15:16
Compare
Choose a tag to compare

New features

  • fct_collapse() gains a group_other argument to allow you to group all
    un-named levels into "Other". (#100, @AmeliaMN)

  • fct_cross() creates a new factor containing the combined levels from two
    or more input factors, similar to base::interaction (@tslumley, #136)

  • fct_inseq() reorders labels in numeric order, if possible (#145, @kbodwin).

  • fct_lump_min() preserves levels that appear at least min times (can also
    be used with the w weighted argument) (@robinsones, #142).

  • fct_match() performs validated matching, providing a safer alternative to
    f %in% c("x", "y") which silently returns FALSE if "x" or "y"
    are not levels of f (e.g. because of a typo) (#126, @jonocarroll).

  • fct_relevel() can now level factors using a function that is passed the
    current levels (#117).

  • as_factor() now has a numeric method. By default, orders factors in numeric
    order, unlike the other methods which default to order of appearance.
    (#145, @kbodwin)

Minor bug fixes and improvements

  • fct_count() gains a parameter to also compute the proportion
    (@zhiiiyang, #146).

  • fct_lump() now does not change the label if no lumping occurs
    (@zhiiiyang, #130).

  • fct_relabel() now accepts character input.

  • fct_reorder() and fct_reorder2() no longer require that the summary
    function return a numeric vector of length 1; instead it can return any
    orderable vector of length 1 (#147).

  • fct_reorder(), fct_reorder2() and as_factor() now use the ellipsis
    package to warn if you pass in named components to ... (#174).

forcats 0.3.0

19 Feb 23:18
Compare
Choose a tag to compare

API changes

  • fct_c() now requires explicit splicing with !!! if you have a
    list of factors that you want to combine. This is consistent with an emerging
    standards for handling ... throughout the tidyverse.

  • fct_reorder() and fct_reorder2() have renamed fun to .fun to
    avoid spurious matching of named arguments.

New features

  • All functions that take ... use "tidy" dots: this means that you use can
    !!! to splice in a list of values, and trailing empty arguments are
    automatically removed. Additionally, all other arguments gain a . prefix
    in order to avoid unhelpful matching of named arguments (#110).

  • fct_lump() gains w argument (#70, @wilkox) to weight value
    frequencies before lumping them together (#68).

Improvements to NA handling

  • as_factor() and fct_inorder() accept NA levels (#98).

  • fct_explicit_na() also replaces NAs encoded in levels.

  • fct_lump() correctly acccounts for NA values in input (#41)

  • lvls_revalue() preserves NA levels.

Minor improvements and bug fixes

  • Test coverage increased from 80% to 99%.

  • fct_drop() now preserves attributes (#83).

  • fct_expand() and lvls_expand() now also take character vectors (#99).

  • fct_relabel() now accepts objects coercible to functions
    by rlang::as_function (#91, @alistaire47)

forcats 0.2.0

27 Jan 15:20
Compare
Choose a tag to compare

New functions

  • as_factor() which works like as.factor() but orders levels by
    appearance to avoid differences between locales (#39).
  • fct_other() makes it easier to convert selected levels to "other" (#40)
  • fct_relabel() allows programmatic relabeling of levels (#50, @krlmlr).

Minor improvements and bug fixes

  • fct_c() can take either a list of factors or individual factors (#42).
  • fct_drop() gains only argument to restrict which levels are dropped (#69)
    and no longer adds NA level if not present (#52).
  • fct_recode() is now checks that each new value is of length 1 (#56).
  • fct_relevel() gains after argument so you can also move levels
    to the end (or any other position you like) (#29).
  • lvls_reorder(), fct_inorder(), and fct_infreq() gain an ordered
    argument, allowing you to override the existing "ordered" status (#54).

forcats 0.1.1

16 Sep 15:40
Compare
Choose a tag to compare
  • Minor fixes for R CMD check
  • Add package docs

Initial release

29 Aug 22:07
Compare
Choose a tag to compare
v0.1.0

Prepare for release (attempt 2)