tidytable 0.11.2
Bug fixes
- Empty dt()works with no warning, #824
tidytable 0.11.1
Functionality improvements
- pmap()now preserves names (#809)
- Package developers no longer need to define
.datatable.aware = TRUEwhen usingtidytablein their package (#269)
Bug fixes
- Attempting to rename columns using group_by()now leads
to an error (#799)
- pmap()family works with data frame inputs (#803)
- filter()properly handles when comparing to- NAwhen- .byis used (#812)
- paged.printhas been removed since it was breaking
console printing (#810)
tidytable 0.11.0
Functionality improvements
- distinct()now works on data frames with list columns
(#773)
- pivot_wider(): Gains- unused_fnargument
(#698)
Deprecations
- verb.()functions have been removed
Bug fixes
- count()has a more helpful error message when- pick()is used (#778)
- unnest(keep_empty = TRUE)preserves vectors of length 0
(#783)
Functions with
notable speed improvements
tidytable 0.10.2
- Patch release to pass CRAN checks for future R release
tidytable 0.10.1
New functions
Bug fixes
- case_when():- .defaultis used when
calculating a common ptype (#751)
- pivot_wider(): Works correctly with dates (#759)
Functions with
notable speed improvements
- case_match(): When comparing input vector to a length 1
literal
tidytable 0.10.0
Deprecations
- verb.()functions are now deprecated
(e.g.- mutate.()). Users should now use the- verb()versions of functions.
New functions
Functionality improvements
- nest(): Gains- .byand- .keyargs
- tidytable(): Auto-names unnamed inputs
- slice_*()family:- byarg added to match- dplyrsemantics.- .bycan still be called by
the user instead of- by.
- dt(): Can use- let()to add columns even on
older versions of- data.table
Bug fixes
- expand_grid(): Can use “unique” or “sorted” as column
names (#718)
Breaking changes
- slice_head()/- _tail():- .byarg
must be explicitly named when slicing by group
Functions with
notable speed improvements
- mutate(): When overwriting existing columns on data
frames with a high number of columns (>1000)
tidytable 0.9.2
New functions
- cross_join()
- group_cols()
- map_vec()
- pick()
- separate_longer_delim()
- separate_wider_delim()
- separate_wider_regex()
Functionality improvements
- separate(): Can now handle when too many or too few new
names are specified in- intoarg (#666)
- unnest_longer(): Gains- keep_emptyarg
Bug fixes
- separate(): Can overwrite separated column without
removal (#680)
- na_if(): Properly replaces- NAs when- yis a vector (#689)
- across(): Anonymous functions are properly translated
(#699)
- pivot_wider():- names_sort = FALSEworks
(#705)
Deprecations
- Using by = character()in joins is now deprecated.
Users should instead usecross_join().
tidytable 0.9.1
New functions
- nest_join()
- Ranking functions:
- min_rank()
- dense_rank()
- percent_rank()
- cume_dist()
 
Functionality improvements
- %in%falls back to- base::'%in%'when input
types aren’t compatible with- vec_in()(@krterberg, #632)
- relocate(): Can rename columns that are moved
- Joins: Can now do cross joins by specifying
by = character()
- group_by(): Gains- .addargument
- ungroup(): Gains- ...arguments
- Printing of grouped tidytables now shows grouping variables
Bug fixes
- row_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)
Functions with
notable speed improvements
tidytable 0.9.0
Dotless functions!
- tidytablenow exports dotless versions of all functions
(e.g.- arrange()/- mutate()/etc.).
- verb.()syntax is still available to users for
backwards compatibility.- 
- Users can use both tidytableanddplyrby
simply loadingdplyraftertidytable,
as theverb.()functions won’t be overwritten bydplyr.
 
New functions
- dplyr-style interface to grouping- 
- group_by()/- ungroup()
- group_vars()
- is_grouped_df()
- rowwise()
 
- add_tally()/- tally()
- case_match()
Functionality improvements
- summarize(): Gains- .unpackargument
- pivot_longer(): Can pass a single ptype or function to- values_ptypes/- values_transform/- names_ptypes/- names_transformargs.
- unnest_longer()/- unnest_wider(): Can pass a
single ptype or function to- ptype/- transformargs.
Bug fixes
- 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- byis a non matching column of x (#625)
tidytable 0.8.1
New Functions
- consecutive_id.()
- if_else.()- 
- Note: Alternate syntax ifelse.()(introduced in v0.4.0)
will remain in the package
 
- %in%
Functionality improvements
- arrange.(): Can use- .envinside arrange
expressions
- case_when.(): Gains- .default/- .ptype/- .sizeargs
- coalesce.(): Gains- .ptype/- .sizeargs
- relocate.(): Now properly handles multiple columns
selected in- .beforeor- .after
- slice_min.()/- slice_max.(): Gain- with_tiesargument
Bug Fixes
- Nested calls to across.()are handled properly
(#505)
- across.(): Can namespace functions in- .fnsarg (#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)
Deprecations
- 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.().
tidytable 0.8.0
New functions
Functionality improvements
- expand_grid.(): Works with data frame inputs
- first.()/- last.()/- nth.(): Gain- na_rmarg
- mutate_rowwise.(): Gains- .keep,- .before, and- .afterargs
- tidytable(): Auto-unpacks unnamed data frame
inputs
Breaking changes
- count.(): Default name is now- ninstead of- Nto match dplyr semantics
Bug fixes
- bind_cols.(): Correctly handles lists (#446)
Functions with
notable speed improvements
- arrange.()
- case_when.(): Faster when conditions evaluate to- NA
- group_split.()
- left_join.(): Faster when- keep = FALSE(the default)
- select.()
- uncount.()
Other notes
- tidytableno longer directly depends on- lifecycle
tidytable 0.7.2
New functions
Functionality improvements
- summarize.(): Now sorts by the grouping variables when- .byis used.
- dt(): Experimental support for tidy evaluation
- as_tidytable(): Now defaults to- .name_repair = "unique"to relax restrictions on creating
new tidytables
Functions with
notable speed improvements
- dt(): Faster when adding new columns or updating
existing columns
- as_tidytable(): Faster when converting- data.frameor- listobjects to a tidytable
- get_dummies.()
Bug fixes
- across.():- .colsarg can find environment
variables in custom functions (#389)
- Joins: Duplicate columns are treated properly when
keep = FALSE(#397)
- Can use anonymous functions inside mapfunctions insidemutate.()(#402)
tidytable 0.7.1
New functions
- add_count.()
- cur_column.()
- cur_data.()
Bug fixes
- unite.(): New column is always placed before the first
united column in the data frame, regardless of order provided.
- Can use .datapronoun insidedesc()inarrange.()(#371)
tidytable 0.7.0
Functionality improvements
- left/- right/- inner/- fulljoins gain- suffixand- keepargs (#354)
- rename.(): Can now rename columns by position
(#361)
- unite.(): The new column is placed before united
columns to match tidyr behavior
New functions
tidytable 0.6.7
Functionality improvements
- .dataand- .envpronouns now work in- tidytablefunctions
- across.(): Works inside of a named- mutate.(). Useful with- rowSums/- rowMeans(#346)
- first.()/- last.(): Gain a- defaultarg
- mutate.(): Can use- stringr::str_glue()without specifying- .envir
- replace_na.(): Checks that- replacearg
only uses columns that exist in the data frame
New functions
Bug fixes
- mutate.(): Can assign to the same column when- .by = character(0)(#332)
tidytable 0.6.6
Functionality improvements
- between()is now auto-translated to- between.()when used inside- tidytablefunctions
- %notin%now uses- %chin%on character
vectors
Bug fixes
- across.(): Can pass extra arguments to a list of
functions (#319)
tidytable 0.6.5
New functions
Bug fixes
- Traceback error messages no longer unnecessarily print the full data
frame (#305)
tidytable 0.6.4
New functions
- unnest_longer.()
- unnest_wider.()
Functionality improvements
- bind_rows.()/- bind_cols.()- 
- Can splice lists of data frames using !!!
 
- mutate.(): Can use- glue::glue()without
specifying- .envir
- pull.(): Added a- nameargument
- separate.(): Can omit output columns by using- NAin- into
- tidytable(): Can splice quosures
- unnest.(): Added- keep_emptyarg
Deprecations
- The following functions have all been deprecated due to the addition
of across.()in v0.6.1
- arrange_across.()
- mutate_across.()
- summarize_across.()
 
tidytable 0.6.3
New functions
- enframe.()
- first.()
- last.()
Functionality improvements
- Subclasses and attributes are now preserved when using
bind_cols,bind_rows,group_split, or joins.
- complete.(): Added a- .byargument
- expand.(): Added a- .byargument
- mutate.(): Auto-names unnamed inputs
- transmute.(): Auto-names unnamed inputs
Bug fixes
- expand.()with- nesting.()- 
- Additional double vectors can have negative values (#282)
 
tidytable 0.6.2
New functions
- cur_group_id.()/- cur_group_rows.()
- n_distinct.()
- nesting.()
Functionality improvements
- mutate.():- 
- Added .keepargument
- Added .before/.afterarguments
 
- tidytable(): Added- .name_repairargument
Functions with
notable speed improvements
- filter.()when- .byis used
tidytable 0.6.1
New functions
Functionality improvements
- group_split.(): Added a- .namedargument.
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.
Bug fixes
- if_all.()/- if_any.()- 
- No longer try to use .bycolumns (#225)
- Can use n()in filtering (#226)
 
- pivot_longer.()- 
- No longer converts factor values to character (#202, #234)
- Preserves column order when using
names_to = c(".value", "id")(#235)
 
tidytable 0.6.0
New functions
Functionality improvements
- replace_na.(): Can now replace- NULLvalues
in list-columns
- Splicing lists using !!!now works incrossing.()andexpand_grid.()
- The following tidyverse functions are now automatically converted to
their tidytable verb.()equivalents when used inside of
tidytable’s mutate/arrange/filter/summarize/slice.
- Functions that previously failed but now work:
- Functions that previously worked with tidytable but are now
converted to their faster tidytable equivalents:
- if_else()/- ifelse()
- case_when()
- desc()
- replace_na()
 
 
Bug fixes
- pivot_longer.(): Correctly pivots unbalanced datasets
when- ".value"is used in- names_to(@moutikabdessabour, #212)
Functions with
notable speed improvements
- mutate_across.()
- mutate_rowwise.()when- c_across.()is
used
- slice.()/- slice_head.()/- slice_tail.()/- slice_min.()/- slice_max.()
Other news
- tidytablehas dropped the- tibblepackage
as a dependency and now uses- pillarinstead.- tibblewas originally used for its- trunc_mat()function that enabled tidytables to print like tibbles do in console.- pillaris the same package that- tibbleuses in
the background.
tidytable 0.5.9
New functions
Functionality improvements
- as_tidytable(): Gains- .name_repairand- .keep_rownamesargs
- count.(): Added- wt,- sortand- nameargs. (@moutikabdessabour, #196)
- mutate.(): Variables are now updated in order when
using “.by” (#166)
- pivot_longer.()- 
- Added names_prefixarg
- Can now use ".value"innames_to
 
- pivot_wider.(): Can now use- ".value"in- names_glue
- separate.(): Added- convertarg
- summarize.(): Variables are now created in order
(#188)
tidytable 0.5.8
Breaking changes
- pivot_longer.():- values_drop_nais no
longer the 5th argument in the function
- pivot_wider.():- values_fn&- values_fillargs are no longer the 6th & 7th args
New functions
- c_across.()
- extract.()
- mutate_rowwise.()
- nest.()
- slice_sample.()
Functionality improvements
- pivot_longer.()- 
- New args: names_sep,names_pattern,names_ptypes,names_transform,names_repair,values_ptypes,values_transform,fast_pivot
- fast_pivotarg: Faster pivoting. The “names” column
will be a factor instead of character. Default is set to- FALSEto match tidyverse semantics. Note: This option sets- variable.factor = TRUEin- data.table::melt(),
which is what leads to it being faster.
 
- pivot_wider.()- 
- New args: names_prefix,names_glue,names_sort,names_repair
 
tidytable 0.5.7
Deprecations
- The dt_verb()versions of functions have been removed
from the package. They have been deprecated with warnings since
v0.5.2
Functionality improvements
- crossing.(): Now works with data frame inputs (@moutikabdessabour, #143)
- distinct.(): Can rename columns (#153)
- get_dummies.(): Dummy columns are now sorted in
alphabetical order
- pivot_wider.(): Added- values_fillargument
Functions with
notable speed improvements
- get_dummies.()
- fill.()
- slice.()
Bug fixes
- mutate.(): Can delete a column using- NULLwhen- .byis provided (#151)
- mutate_across.(): Can reference other columns in .fns
call (#145)
- slice.(): Works when- .bycontains all
columns (#158)
- unnest.(): Works when the only column is the list
column (#144)
tidytable 0.5.6
Breaking changes
- bind_cols.(): Name repair uses- vec_as_names()instead of- vec_as_names_legacy()
Functionality improvements
- bind_cols.(): Added- .name_repairarg
- unnest.(): Added- names_sepand- names_repairargs
- print()- 
- Added n,width, andn_extraargs
- Now prints like tibbles in all cases (special thanks to @moutikabdessabour)
 
- slice.(): Can now drop specified rows with negative
numbers
New functions
- arrange_across.()
- case_when.()- 
- The old “case when” translation case.()will remain in
the package, as it is called likedata.table::fcase()but
allows for thedefaultto be a vector.
 
- desc.()
Functions with
notable speed improvements
Deprecations
- unnest.():- .keep_allarg changed to- .drop
tidytable 0.5.5
Breaking changes
- bind_rows.(): Removed- .use_namesand- .fillargs- 
- These are now assumed to be TRUE, which matchesdplyrsemantics.
 
- complete.():- .fillarg renamed to- fill
- pull.(): defaults to- var = -1instead of- var = NULL- 
- The result is the same when using the default value, but will break
cases where var = NULLwas explicitly called.
 
- slice.():- .bymust be named when slicing
by group
Functionality improvements
- tidytablenow 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 values
- pull.(): Numerical selection now works
- slice.(): Now uses- ...to select which
rows to slice
New functions
Bug fixes
- rename.(): Works when there are spaces in the column
names (#109)
Functions with
notable speed improvements
tidytable 0.5.4
Breaking changes
- Column names auto-generated by summarize_across.()now
use a suffix instead of a prefix
Functionality improvements
- mutate_across.(): Added- .namesarg to help
with naming newly created columns
- summarize_across.(): Added- .namesarg to
help with naming newly created columns
- summarize.(): Added- .sortarg to
optionally sort the resulting data.table
Bug fixes
- transmute.(): Doesn’t drop “by” columns (#98)
- slice.()- 
- Allows gaps in rowsarg (#99)
- Doesn’t reorder columns when using .by(#101)
 
- full_join.(): No longer returns a keyed data.table
(#102)
Internal
- Import tibble
- Enables cleaner console printing of tidytables
- glimpse()is now reexported
- Will be replaced by pillarin a later release oncetibble::trunc_mat()&tibble::glimpse()are moved there
 
tidytable 0.5.3
Breaking changes
- bind_rows.()- 
- use.namesarg renamed to- .use_names
- fillarg renamed to- .fill
 
New functions
- complete.()
- crossing.()
- expand.()
- expand_grid.()
- uncount.()
Functionality improvements
- replace_na.(): Now works on- data.frame/- data.tableinputs as well as
vectors
Deprecations
- desc.()has been deprecated due to incompatibility with
character columns
tidytable 0.5.2
- This version contains general performance improvements
Deprecations
- Group by arg byhas been deprecated for.by. This will allow “by” to be used as a column name inmutate.()&summarize.()in future
releases.
- All dt_verb()functions are soft deprecated
New functions
Functionality improvements
- unnest.(): Added- .keep_allarg to keep all
list columns that were not unnested
tidytable 0.5.1
New functions
- summarize_across.()&- summarise_across.()
Bug fixes:
- Fixed distinct.()bug where it wasn’t returning unique
rows
tidytable 0.5.0
- tidytablenow works with quosures
- tidyselect v0.1.1compatibility: Updated functions to
use- where()
Functionality improvements
- nest_by.(): Added- .keeparg
Deprecations
- Old select helpers like everything.()are now replaced
by normal helpers likeeverything()
- rename_across/_if/_at/_allhave been superseded by- rename_with.()
Breaking changes
- group_split.():- keeparg renamed to- .keep
New functions
Functions with
notable speed improvements
tidytable 0.4.1
- tidytablenow utilizes- tidyselect&- vctrs
Breaking changes
- get_dummies.():- colsarg defaults to- c(is.character, is.factor). The result is the same, but is
more consistent with other enhanced selection functions
- mutate_across.():- .funsargument renamed
to- .fnsto match dplyr 1.0
New functions
Functionality improvements
- Paged printing now works in Rmarkdown
- bind_rows.(): Does name checking and fills missing
- distinct.(): Added- .keep_allargument
- fill.(): Preserves column order when using “by”
- group_split.(): Added- keeparg
- nest_by.()- 
- Can now unnest multiple columns in one call
- data.tables in a list column can now have different ncols and
different column order
 
- select.(): Now allows column renaming
- transmute.(): Summary functions
(- mean/- max/etc.) can now be used
Functions with
notable speed improvements
- distinct.()
- drop_na.()
- relocate.()
Bug fixes
- group_split.(): Now returns a list of tidytables
instead of data.tables
- left_join.(): Now works with “by” columns of different
names
tidytable 0.4.0
New syntax
- All functions are now written as verb.()
- dt_verb()functions still work, but may be slowly
deprecated in future releases
Functionality improvements
- Enhanced selection now works in “by” calls
- filter.()now works with “by”
- pivot_wider.()can now be used with an aggregation
function
- pull.()defaults to last column in a data.table
New functions
- ifelse.()
- n.()
- nest_by.()replaces- dt_group_nest()
- row_number.()
- transmute.()
- unnest.()replaces- dt_unnest_legacy()
- Select helper any_of.()
Functions with
notable speed improvements
- fill.()
- pivot_longer.()
- unnest.()
tidytable 0.3.2
tidytable class
- New tidytableclass is a data.table subclass with
cleaner printing.
- Operates like a data.table in all other cases.
- All tidytable functions automatically convert to
tidytableclass in the background.
New functions
- tidytable constructors:
- tidytable(): Create a data.table/tidytable
- as_tidytable(): Convert to data.table/tidytable
- is_tidytable(): Test if an object is a
data.table/tidytable
 
- dt_get_dummies(): Get dummy variables
- dt_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
- .Nnow works when using- dt_slice()&
variants
- Function length limit bug no longer occurs when using ~indt_map()
tidytable 0.3.1
- Updated dt()docs per CRAN instructions
Breaking changes
- dt_mutate()&- dt_rename()no longer
modify-by-reference
- dt_unnest_legacy()drops “keep” argument, but
automatically keeps all non-nested columns.- 
- New translation is ~5-10x faster than before
 
Functionality improvements
- dt()now automatically converts data.frame input to a
data.table
- dt_mutate_across(): Added “by” arg
Bug fixes
- dt_left_join()fix so columns are ordered
correctly
tidytable 0.3.0