Rework completecases and nonunique
Implements the suggestions made in https://github.com/JuliaData/DataTables.jl/issues/38#issuecomment-288556269.
Looks like this needs a rebase.
I think the consensus in #38 was that this shouldn't be merged in this form. This implements the methods as
function(::DataTable, dimension::Int(1 for rows or 2 for columns))
but there are already functions that have the form
function(::DataTable, column(s)::Symbol or Vector{Symbol})
where the second positional argument refers to a subset of columns to evaluate against, and we're adding another instance of that style in https://github.com/JuliaData/DataTables.jl/pull/39. The functions that only check a subset of columns with the form of
function(::DataTable, column(s)::Symbol or Vector{Symbol})
could be extended to
function(::DataTable, column(s)::Symbol or Vector{Symbol} or Int or Vector{Int} or Vector{Bool})
which will allow some additional flexibility for users on how they want to refer to columns. That conflicts with the proposed changes here.
I'd like to re-write this to accept an optional dimension specification (dim = 1, :r, or :rows for rows, dim = 2, :c, :cols, or :columns for columns, and dim = (1, 2), :b, or :both for rows and columns) as a keyword argument, with the default being to only check rows as is currently hardcoded into several functions.