Nothing
pmap()
now preserves names (#809).datatable.aware = TRUE
when
using tidytable
in their package (#269)group_by()
now leads to an error (#799)pmap()
family works with data frame inputs (#803)filter()
properly handles when comparing to NA
when .by
is used (#812)paged.print
has been removed since it was breaking console printing (#810)distinct()
now works on data frames with list columns (#773)pivot_wider()
: Gains unused_fn
argument (#698)verb.()
functions have been removedcount()
has a more helpful error message when pick()
is used (#778)unnest(keep_empty = TRUE)
preserves vectors of length 0 (#783)distinct()
reframe()
case_when()
: .default
is used when calculating a common ptype (#751)pivot_wider()
: Works correctly with dates (#759)case_match()
: When comparing input vector to a length 1 literalverb.()
functions are now deprecated (e.g. mutate.()
). Users should now use
the verb()
versions of functions.tribble()
nest()
: Gains .by
and .key
argstidytable()
: Auto-names unnamed inputsslice_*()
family: by
arg added to match dplyr
semantics.
.by
can still be called by the user instead of by
.dt()
: Can use let()
to add columns even on older versions of data.table
expand_grid()
: Can use "unique" or "sorted" as column names (#718)slice_head()
/_tail()
: .by
arg must be explicitly named when slicing by groupmutate()
: When overwriting existing columns on data frames with a high
number of columns (>1000)cross_join()
group_cols()
map_vec()
pick()
separate_longer_delim()
separate_wider_delim()
separate_wider_regex()
separate()
: Can now handle when too many or too few new names are
specified in into
arg (#666)unnest_longer()
: Gains keep_empty
argseparate()
: Can overwrite separated column without removal (#680)na_if()
: Properly replaces NA
s when y
is a vector (#689)across()
: Anonymous functions are properly translated (#699)pivot_wider()
: names_sort = FALSE
works (#705)by = character()
in joins is now deprecated. Users should instead use cross_join()
.nest_join()
min_rank()
dense_rank()
percent_rank()
cume_dist()
%in%
falls back to base::'%in%'
when input types aren't compatible
with vec_in()
(@krterberg, #632)relocate()
: Can rename columns that are movedby = character()
group_by()
: Gains .add
argumentungroup()
: Gains ...
argumentsrow_number()
: Works correctly on 0-row data frame when overwriting existing column (#639)slice_head()
/slice_tail()
: Properly slice on 0-row data frame (#642)fill()
tidytable
now exports dotless versions of all functions (e.g. arrange()
/mutate()
/etc.).verb.()
syntax is still available to users for backwards compatibility.tidytable
and dplyr
by simply loading
dplyr
after tidytable
, as the verb.()
functions won't be overwritten by dplyr
.dplyr
-style interface to groupinggroup_by()
/ungroup()
group_vars()
is_grouped_df()
rowwise()
add_tally()
/tally()
case_match()
summarize()
: Gains .unpack
argumentpivot_longer()
: Can pass a single ptype or function to
values_ptypes
/values_transform
/names_ptypes
/names_transform
args.unnest_longer()
/unnest_wider()
: Can pass a single ptype or function to
ptype
/transform
args.tidytable::'%in%'
dispatches to base::'%in%'
when comparing with a list (#563)pivot_wider()
: Works with column names with spaces (#569)pivot_wider()
: names_glue="{.value}_{somecolumn}"
assigns column names in
correct order (@Darxor, #579)left_join()
: Works when y matching columns in by
is a non matching column of x (#625)consecutive_id.()
if_else.()
ifelse.()
(introduced in v0.4.0) will remain in the package%in%
arrange.()
: Can use .env
inside arrange expressionscase_when.()
: Gains .default
/.ptype
/.size
argscoalesce.()
: Gains .ptype
/.size
argsrelocate.()
: Now properly handles multiple columns selected in .before
or .after
slice_min.()
/slice_max.()
: Gain with_ties
argumentacross.()
are handled properly (#505)across.()
: Can namespace functions in .fns
arg (#511)as_tidytable()
: Can keep row names when converting a matrix (#527)unnest.()
: Handles empty data frames (@roboton, #530)nth.()
: Extracts list elements (#534)arrange.()
: Properly sorts NA
s (#541)arrange_across.
/mutate_across.
/summarize_across.
are now defunct. They have been
deprecated with warnings since v0.6.4 (Jul 2021). Users must now use across.()
inside
arrange.()
/mutate.()
/summarize.()
.na_if.()
expand_grid.()
: Works with data frame inputsfirst.()
/last.()
/nth.()
: Gain na_rm
argmutate_rowwise.()
: Gains .keep
, .before
, and .after
argstidytable()
: Auto-unpacks unnamed data frame inputscount.()
: Default name is now n
instead of N
to match dplyr semanticsbind_cols.()
: Correctly handles lists (#446)arrange.()
case_when.()
: Faster when conditions evaluate to NA
group_split.()
left_join.()
: Faster when keep = FALSE
(the default)select.()
uncount.()
tidytable
no longer directly depends on lifecycle
pmap.()
summarize.()
: Now sorts by the grouping variables when .by
is used.dt()
: Experimental support for tidy evaluationas_tidytable()
: Now defaults to .name_repair = "unique"
to relax restrictions on creating new tidytablesdt()
: Faster when adding new columns or updating existing columnsas_tidytable()
: Faster when converting data.frame
or list
objects to a tidytableget_dummies.()
across.()
: .cols
arg can find environment variables in custom functions (#389)keep = FALSE
(#397)map
functions inside mutate.()
(#402)add_count.()
cur_column.()
cur_data.()
unite.()
: New column is always placed before the first united column in the data frame,
regardless of order provided..data
pronoun inside desc()
in arrange.()
(#371)left
/right
/inner
/full
joins gain suffix
and keep
args (#354)rename.()
: Can now rename columns by position (#361)unite.()
: The new column is placed before united columns to match tidyr behaviornew_tidytable()
.data
and .env
pronouns now work in tidytable
functionsacross.()
: Works inside of a named mutate.()
. Useful with rowSums
/rowMeans
(#346)first.()
/last.()
: Gain a default
argmutate.()
: Can use stringr::str_glue()
without specifying .envir
replace_na.()
: Checks that replace
arg only uses columns that exist in the data framenth.()
mutate.()
: Can assign to the same column when .by = character(0)
(#332)between()
is now auto-translated to between.()
when used inside tidytable
functions%notin%
now uses %chin%
on character vectorsacross.()
: Can pass extra arguments to a list of functions (#319)fread.()
fwrite.()
unnest_longer.()
unnest_wider.()
bind_rows.()
/bind_cols.()
!!!
mutate.()
: Can use glue::glue()
without specifying .envir
pull.()
: Added a name
argumentseparate.()
: Can omit output columns by using NA
in into
tidytable()
: Can splice quosuresunnest.()
: Added keep_empty
argacross.()
in v0.6.1arrange_across.()
mutate_across.()
summarize_across.()
enframe.()
first.()
last.()
bind_cols
,
bind_rows
, group_split
, or joins.complete.()
: Added a .by
argumentexpand.()
: Added a .by
argumentmutate.()
: Auto-names unnamed inputstransmute.()
: Auto-names unnamed inputsexpand.()
with nesting.()
cur_group_id.()
/cur_group_rows.()
n_distinct.()
nesting.()
mutate.()
:.keep
argument.before
/.after
argumentstidytable()
: Added .name_repair
argumentfilter.()
when .by
is usedacross.()
coalesce.()
group_split.()
: Added a .named
argument. If .named = TRUE
, the resulting list will
have names that indicate the group they are a part of.pivot_longer.()
: Can now use names_to = c(".value", NA)
to drop the id column.if_all.()
/if_any.()
.by
columns (#225)n()
in filtering (#226)pivot_longer.()
names_to = c(".value", "id")
(#235)if_all.()
/if_any.()
replace_na.()
: Can now replace NULL
values in list-columns!!!
now works in crossing.()
and expand_grid.()
verb.()
equivalents when
used inside of tidytable's mutate/arrange/filter/summarize/slice.n()
row_number()
if_else()
/ifelse()
case_when()
desc()
replace_na()
pivot_longer.()
: Correctly pivots unbalanced datasets when ".value"
is used
in names_to
(@moutikabdessabour, #212)mutate_across.()
mutate_rowwise.()
when c_across.()
is usedslice.()
/slice_head.()
/slice_tail.()
/slice_min.()
/slice_max.()
tidytable
has dropped the tibble
package as a dependency and now uses pillar
instead.
tibble
was originally used for its trunc_mat()
function that enabled tidytables to print like
tibbles do in console. pillar
is the same package that tibble
uses in the background.between.()
as_tidytable()
: Gains .name_repair
and .keep_rownames
argscount.()
: Added wt
, sort
and name
args. (@moutikabdessabour, #196)mutate.()
: Variables are now updated in order when using ".by" (#166)pivot_longer.()
names_prefix
arg".value"
in names_to
pivot_wider.()
: Can now use ".value"
in names_glue
separate.()
: Added convert
argsummarize.()
: Variables are now created in order (#188)pivot_longer.()
: values_drop_na
is no longer the 5th argument in the functionpivot_wider.()
: values_fn
& values_fill
args are no longer the 6th & 7th argsc_across.()
extract.()
mutate_rowwise.()
nest.()
slice_sample.()
pivot_longer.()
names_sep
, names_pattern
, names_ptypes
, names_transform
, names_repair
,
values_ptypes
, values_transform
, fast_pivot
fast_pivot
arg: Faster pivoting. The "names" column will be a factor instead of character.
Default is set to FALSE
to match tidyverse semantics. Note: This option sets variable.factor = TRUE
in data.table::melt()
, which is what leads to it being faster.pivot_wider.()
names_prefix
, names_glue
, names_sort
, names_repair
dt_verb()
versions of functions have been removed from the package.
They have been deprecated with warnings since v0.5.2crossing.()
: Now works with data frame inputs (@moutikabdessabour, #143)distinct.()
: Can rename columns (#153)get_dummies.()
: Dummy columns are now sorted in alphabetical orderpivot_wider.()
: Added values_fill
argumentget_dummies.()
fill.()
slice.()
mutate.()
: Can delete a column using NULL
when .by
is provided (#151)mutate_across.()
: Can reference other columns in .fns call (#145)slice.()
: Works when .by
contains all columns (#158)unnest.()
: Works when the only column is the list column (#144)bind_cols.()
: Name repair uses vec_as_names()
instead of vec_as_names_legacy()
bind_cols.()
: Added .name_repair
argunnest.()
: Added names_sep
and names_repair
argsprint()
n
, width
, and n_extra
argsslice.()
: Can now drop specified rows with negative numbersarrange_across.()
case_when.()
case.()
will remain in the package,
as it is called like data.table::fcase()
but allows for the default
to be a vector.desc.()
slice.()
unnest.()
: .keep_all
arg changed to .drop
bind_rows.()
: Removed .use_names
and .fill
argsTRUE
, which matches dplyr
semantics.complete.()
: .fill
arg renamed to fill
pull.()
: defaults to var = -1
instead of var = NULL
var = NULL
was explicitly called.slice.()
: .by
must be named when slicing by grouptidytable
now integrates better with tidyverse functions through vctrs
. This means code such as
vec_cbind(tibble::tibble(x = 1:3), tidytable(y = "foo"))
will bind the results into a tidytable.complete.()
: Can now append extra valuespull.()
: Numerical selection now worksslice.()
: Now uses ...
to select which rows to slicesemi_join.()
rename.()
: Works when there are spaces in the column names (#109)replace_na.()
summarize_across.()
now use a suffix
instead of a prefixmutate_across.()
: Added .names
arg to help with naming newly created columnssummarize_across.()
: Added .names
arg to help with naming newly created columnssummarize.()
: Added .sort
arg to optionally sort the resulting data.tabletransmute.()
: Doesn't drop "by" columns (#98)slice.()
rows
arg (#99).by
(#101)full_join.()
: No longer returns a keyed data.table (#102)tibble
glimpse()
is now reexportedpillar
in a later release once tibble::trunc_mat()
&
tibble::glimpse()
are moved therebind_rows.()
use.names
arg renamed to .use_names
fill
arg renamed to .fill
complete.()
crossing.()
expand.()
expand_grid.()
uncount.()
replace_na.()
: Now works on data.frame
/data.table
inputs as well as vectorsdesc.()
has been deprecated due to incompatibility with character columnsby
has been deprecated for .by
.
This will allow "by" to be used as a column name in mutate.()
& summarize.()
in future releases.dt_verb()
functions are soft deprecatedseparate_rows.()
unnest.()
: Added .keep_all
arg to keep all list columns that were not unnestedsummarize_across.()
& summarise_across.()
distinct.()
bug where it wasn't returning unique rowstidytable
now works with quosurestidyselect v0.1.1
compatibility: Updated functions to use where()
nest_by.()
: Added .keep
argeverything.()
are now replaced by normal helpers like everything()
rename_across/_if/_at/_all
have been superseded by rename_with.()
group_split.()
: keep
arg renamed to .keep
lags.()
& leads.()
case.()
tidytable
now utilizes tidyselect
& vctrs
get_dummies.()
: cols
arg defaults to c(is.character, is.factor)
.
The result is the same, but is more consistent with other enhanced selection functionsmutate_across.()
: .funs
argument renamed to .fns
to match dplyr 1.0desc.()
unite.()
bind_rows.()
: Does name checking and fills missingdistinct.()
: Added .keep_all
argumentfill.()
: Preserves column order when using "by"group_split.()
: Added keep
argnest_by.()
select.()
: Now allows column renamingtransmute.()
: Summary functions (mean
/max
/etc.) can now be useddistinct.()
drop_na.()
relocate.()
group_split.()
: Now returns a list of tidytables instead of data.tablesleft_join.()
: Now works with "by" columns of different namesverb.()
dt_verb()
functions still work, but may be slowly deprecated in future releasesfilter.()
now works with "by"pivot_wider.()
can now be used with an aggregation functionpull.()
defaults to last column in a data.tableifelse.()
n.()
nest_by.()
replaces dt_group_nest()
row_number.()
transmute.()
unnest.()
replaces dt_unnest_legacy()
any_of.()
fill.()
pivot_longer.()
unnest.()
tidytable
class is a data.table subclass with cleaner printing.tidytable
class in the background.tidytable()
: Create a data.table/tidytableas_tidytable()
: Convert to data.table/tidytableis_tidytable()
: Test if an object is a data.table/tidytabledt_get_dummies()
: Get dummy variablesdt_separate()
dt_pivot_longer()
"cols" arg now defaults to dt_everything()
instead of NULL
.
The result is the same, but is more consistent with other enhanced selection functions.N
now works when using dt_slice()
& variants~
in dt_map()
dt()
docs per CRAN instructionsdt_mutate()
& dt_rename()
no longer modify-by-referencedt_unnest_legacy()
drops "keep" argument, but automatically keeps all non-nested columns.dt()
now automatically converts data.frame input to a data.tabledt_mutate_across()
: Added "by" argdt_left_join()
fix so columns are ordered correctlyAny scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.