Tidier.jl updates
v1.4.0 - 2024-04-19
Add and re-export TidierDB.jl as DB
Add and re-export TidierFiles.jl
v1.3.0 - 2024-04-09
Update minimum Julia required version to 1.9
Base package version updates
New documentation
v1.2.1 - 2024-01-02
- Base package version updates
v1.2.0 - 2023-11-28
Add and re-export TidierText.jl
Bugfix: Re-export TidierVest.jl (forgot to do this in 1.1.0)
v1.1.0 - 2023-11-18
Update versions of base packages
Add TidierVest.jl
v1.0.0 - 2023-08-07
- Convert Tidier.jl to a meta-package that only re-exports other Tidier packages
v0.7.7 - 2023-07-15
Added documentation on how to interpolate variables inside of
forloops. Note:!!interpolation doesn't work inside offorloops because macros are expanded during parsing and not at runtime.Fixed bug in
parse_pivot_arg()to enable interpolation inside of pivoting functions when used inside aforloop.Added
cumsum(),cumprod(), andaccumulate()to the do-not-vectorize list.
v0.7.6 - 2023-05-04
- Fixed bug to allow multiple columns in
@distinct()separated by commas or using selection helpers.
v0.7.5 - 2023-04-30
Fixed bug to ensure that
&&and||are auto-vectorizedAdded docstrings and examples to show different ways of filtering by multiple "and" conditions, including
&&,&, and separating multiple expressions with commas.
v0.7.4 - 2023-04-11
- Added
as_float(),as_integer(), andas_string()
v0.7.3 - 2023-04-10
- Added
@glimpse()
v0.7.2 - 2023-04-05
- Moved repo to TidierOrg
v0.7.1 - 2023-04-01
Added
@drop_na()with optional column selection parameterRe-exported
lead()andlag()from ShiftedArrays.jl and added both to the do-not-vectorize listBug fix: Fixed
ntile()condition for when all elements are missing
v0.7.0 - 2023-03-27
Added
@count()and@tally()Added
@bind_rows()and@bind_cols()Added
@clean_names()to mimic R'sjanitor::clean_names()by wrapping the Cleaner.jl packageAdded support for backticks to select columns containing spaces.
Added support for
ntile(), which is on the do-not-vectorize list because it takes in a vector and returns a vector.Bug fix: removed selection helpers (
startswith,contains, andendswithfrom the do-not-vectorize list).
v0.6.0 - 2023-03-18
Added
@distinct(). It behaves slightly differently from dplyr when provided arguments in that it returns all columns, not just the selected ones.Added support for
n()androw_number().Added support for negative selection helper functions (e.g.,
-contains("a")).Added support for negative selection using
!(e.g.,!a,!(a:b),!contains("a")).In
@pivot_longer(), thenames_toandvalues_toarguments now also support strings (in addition to bare unquoted names).In
@pivot_wider(), thenames_fromandvalues_fromarguments now also support strings (in addition to bare unquoted names).Bug fix:
@mutate(a = 1)or any scalar previously errored because the1was being wrapped inside aQuoteNode. Now, 1 is correctly broadcasted.Bug fix:
@slice(df, 1,2,1)previously only returned rows 1 and 2 only (and not 1 again).@slice(df, 1,2,1)now returns rows 1, 2, and 1 again.Bug fix: added
repeat()to the do-not-vectorize list.
v0.5.0 - 2023-03-10
Added
@pivot_wider()and@pivot_wider().Added
if_else()andcase_when().Updated documentation to include
Main.variableexample as an alternative syntax for interpolation.Simplified internal use of
subset()by using keyword argument ofskipmissing = trueinstead of usingcoalesce(..., false).For developers: doctests can now be run locally using
runtests.jl.
v0.4.1 - 2023-03-05
In addition to
inbeing auto-vectorized as before, the second argument is automatically wrapped inside ofRef(Set(arg2))if not already done to ensure that it is evaluated correctly and fast. See: https://bkamins.github.io/julialang/2023/02/10/in.html for details. This same behavior is also implemented for∈and∉.Added documentation and docstrings for new
inbehavior with@filter()and@mutate().Improved interpolation to support values and not just column names. Note: there is a change of behavior now for strings, which are treated as values and not as column names. Updated examples in the documentation webpage for interpolation.
Bug fix: Re-exported
Cols()because this is required for interpolated columns inside ofacross(). Previously, this was passing tests becauseusing RDatasetswas exportingCols().
v0.4.0 - 2023-02-29
Rewrote the parsing engine to remove all regular expression and string parsing
Selection helpers now work within both
@select()andacross().@group_by()now sorts the groups (similar todplyr) and supports tidy expressions, for example@group_by(df, d = b + c).@slice()now supports grouped data frames. For example,@slice(gdf, 1:2)will slice the first 2 rows from each group ifgdfis a grouped data frame.All functions now work correctly with both grouped and ungrouped data frames following
dplyrbehavior. In other words, all functions retain grouping for grouped data frames (e.g.,ungroup = false), other than@summarize(), which "peels off" one layer of grouping in a similar fashion todplyr.Added
@ungroupto explicitly remove groupingAdded
@pullmacro to extract vectorsAdded joins:
@left_join(),@right_join(),@inner_join(), and@full_join(), which support natural joins (i.e., where nobyargument is given) or explicit joins by providing keys. All join functions ungroup both data frames before joining.Added
starts_with()as an alias for Julia'sstartswith(),ends_with()as an alias for Julia'sendswith(), andmatches()as an alias for Julia'sRegex().Enabled interpolation of global user variables using
!!similar to R'srlang.Enabled a
~tilde operator to mark functions (or operators) as unvectorized so that Tidier.jl does not "auto-vectorize" them.Disabled
@infologging of generatedDataFrames.jlcode. This code can be shown by setting an option using the newTidier_set()function.Fixed a bug where functions were evaluated inside the module, which meant that user-provided functions would not work.
@filter()now skips rows that evaluate to missing values.Re-export a handful of functions from the
DataFrames.jlpackage.Added doctests to all examples in the docstrings.
v0.3.0 - 2023-02-11
Updated auto-vectorization so that operators are vectorized differently from other types of functions. This leads to nicer printing of the generated DataFrames.jl code. For example, 1 .+ 1 instead of (+).(1,1)
The generated DataFrames.jl code now prints to the screen
Updated the ordering of columns when using
across()so that each column is summarized in consecutive columns (e.g.,Rating_mean,Rating_median,Budget_mean,Budget_median) instead of being organized by function (e.g. of prior ordering:Rating_mean,Budget_mean,Rating_median,Budget_median)Added exported functions for
across()anddesc()as a placeholder for documentation, though these functions will throw an error if called because they should only be called inside of Tidier macrosCorrected GitHub actions and added tests (contributed by @rdboyes)
Bumped version to 0.3.0
v0.2.0 - 2023-02-09
Fixed bug with
@rename()so that it supports multiple argumentsAdded support for numerical selection (both positive and negative) to
@select()Added support for
@slice(), including positive and negative indexingAdded support for
@arrange(), including the use ofdesc()to specify descending orderAdded support for
across(), which has been confirmed to work with both@mutate(),@summarize(), and@summarise().Updated auto-vectorization so that
@summarizeand@summarisedo not vectorize any functionsRe-export
StatisticsandChain.jlBumped version to 0.2.0
v0.1.0 - 2023-02-07
- Initial release, version 0.1.0