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.tableexpand_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 NAs 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 .afterslice_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 NAs (#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 NAgroup_split.()left_join.(): Faster when keep = FALSE (the default)select.()uncount.()tidytable no longer directly depends on lifecyclepmap.()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 .envirreplace_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 .envirpull.(): Added a name argumentseparate.(): Can omit output columns by using NA in intotidytable(): 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_topivot_wider.(): Can now use ".value" in names_glueseparate.(): 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_pivotfast_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_repairdt_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 .dropbind_rows.(): Removed .use_names and .fill argsTRUE, which matches dplyr semantics.complete.(): .fill arg renamed to fillpull.(): defaults to var = -1 instead of var = NULLvar = 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)tibbleglimpse() is now reexportedpillar in a later release once tibble::trunc_mat() &
tibble::glimpse() are moved therebind_rows.()use.names arg renamed to .use_namesfill arg renamed to .fillcomplete.()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 .keeplags.() & leads.()case.()tidytable now utilizes tidyselect & vctrsget_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.