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
for
loops. Note:!!
interpolation doesn't work inside offor
loops 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 afor
loop.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
, andendswith
from 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_to
andvalues_to
arguments now also support strings (in addition to bare unquoted names).In
@pivot_wider()
, thenames_from
andvalues_from
arguments now also support strings (in addition to bare unquoted names).Bug fix:
@mutate(a = 1)
or any scalar previously errored because the1
was 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.variable
example as an alternative syntax for interpolation.Simplified internal use of
subset()
by using keyword argument ofskipmissing = true
instead of usingcoalesce(..., false)
.For developers: doctests can now be run locally using
runtests.jl
.
v0.4.1 - 2023-03-05
In addition to
in
being 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
in
behavior 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 RDatasets
was 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 ifgdf
is a grouped data frame.All functions now work correctly with both grouped and ungrouped data frames following
dplyr
behavior. 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
@ungroup
to explicitly remove groupingAdded
@pull
macro to extract vectorsAdded joins:
@left_join()
,@right_join()
,@inner_join()
, and@full_join()
, which support natural joins (i.e., where noby
argument 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
@info
logging of generatedDataFrames.jl
code. 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.jl
package.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
@summarize
and@summarise
do not vectorize any functionsRe-export
Statistics
andChain.jl
Bumped version to 0.2.0
v0.1.0 - 2023-02-07
- Initial release, version 0.1.0