- Fix a bug where multicolumn selectors were ignored by
@select!
,@rselect
, and@rselect!
(Issue #404), (#405)
- Bumped the Chain.jl compat entry in the Project.toml (#382)
- Fixed macro hygiene issues (#384)
- Fixed a bug with broadcasting in
@astable
(#382) - Added
@note!
and@label!
, along withprintlabels
andprintnotes
to make working with metadata easier. (#377) - Added support for
Not
,All
, andCols
in@select
, making it easier to keep or drop many columns at once. (#372) - Added the
@groupby
macro, which provides an easier syntax for grouping data frames (#373)
- Fixed a bug where
ByRow
was not properly identified if DataFramesMeta.jl wasimport
ed (#366)
- Add the
@rename
macro for renaming columns in keyword argument-like syntax. (#343) - Fix a bug relating to
^
for escaping symbols (#347) - Fix typos in documentation (#355)
- Add the
@distinct
and@rdistinct
macros, for getting unique observations of a data frame. (#340) - Fix a bug which created
UndefVarErrors
with broadcasted functions. (#346) - Fixed bad use of
sortperm
with correct use ofordinalrank
from StatsBase.jl in tutorial (#338) - Minor documentation fixes (#345)
-
Add support for Chain.jl version 0.5, and remove support for Chain.jl 0.4. In Chain.jl 0.4, the command
chain df begin f(df) @aside x = 1 end
creates a
let
scope and thusx
is not visible outside the@chain
block. In version 0.5, the above macro does not create alet
scope, makingx
accessible outside the block. To restore 0.4 behavior, write@chain let ...
. Because this a breaking change of a dependency, we also release a version bump of DataFramesMeta.jl. (#332)
- Allow
AsTable
on the RHS of transformations. This allows one to work with collections of columns programtically, such as taking the row-wisemean
of many columns. (#307) - Expressions on the RHS of the form
f ∘ g
will now be passed directly to the underlyingtransform
call without modification, reducing compilation latency. (#317) - Nested functions, of the form
f(g(:x))
will be transformed to(f ∘ g)(:x)
, further reducing latency. (#319) - Improvements to documentation (#305, #314, #315, #318, #322, #326)
- Add the
@astable
macro-flag to construct multiple inter-dependent columns at once. (#298). - As a result of #298, automatic
AsTable
expansion in non-keyword transformations in the first (and only) transformations in@by
and@combine
are no longer supported. Previously, such operations were allowed, but with a visible deprecation warning.
- Fix a bug with
@rtransform!
and@rselect!
, where the macros were not actually mutating the data frame. (#294)
- Add
@passmissing
flag for skipping missing values in row-wise macros. (#272) - Add row-wise transformation macros
@rtransform
,@rselect
,@rsubset
, and@rorderby
. (#267) - Add
$
to escape columns rather thancols
, which is now deprecated. (#285) - Fix a bug disallowing multiple arguments in function-like syntax for row-wise macros. (#281)
- Documentation improvements (#277, #279, #284, #286)
- Add a new dplyr-inspired tutorial (#279)
- The order of rows after a
@transform(gd::GroupedDataFrame, args...)
now matches the order of rows returned afterDataFrames.transform(gd::GroupedDataFrame, args...)
. @select
now supportsGroupedDataFrame
with the same behavior asDataFrames.select(df::GroupedDataFrame, args...)
([#180])@orderby(gd::GroupedDataFrame, args...)
is now reserved and will error.- Restrictions are imposed on the types of column references allowed when using
cols
. Mixing integer column references with other types now errors. ([#183]) @where
with a grouped data frame will now perform operations by group and filter rows in the parentAbstractDataFrame
. The operation no longer filters groups. Returns a freshDataFrame
.@based_on
has been renamed to@combine
@byrow
has been renamed to@eachrow