Dataset v0.3.0 Dataset View Source

Datasets represent labeled tabular data. Datasets are enumerable:

iex> Dataset.new([{:a, :b, :c},
...>              {:A, :B, :C},
...>              {:i, :ii, :iii},
...>              {:I, :II, :III}],
...>             {"one", "two", "three"})
...> |> Enum.map(&elem(&1, 2))
[:c, :C, :iii, :III]

Datasets are also collectable:

iex> for x <- 0..10, into: Dataset.empty({:n}), do: x
%Dataset{labels: {:n}, rows: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}

Link to this section Summary

Functions

Construct a new dataset. A dataset is a list of tuples. With no arguments, an empty dataset with zero columns is constructed. Withf one argument a dataset is constructed with the passed object interpreted as rows and labels beginning with 0 are generated, the number of which are determined by size of the first tuple in the data.

iex> Dataset.new([{:a,:b,:c},
...>              {:A, :B, :C},
...>              {:i, :ii, :iii},
...>              {:I, :II, :III}])
...> |> Dataset.rotate()
%Dataset{
  labels: {0, 1, 2, 3},
  rows: [{:a, :A, :i, :I},
         {:b, :B, :ii, :II},
         {:c, :C, :iii, :III}]
}

Link to this section Functions

Link to this function

new(rows \\ [], labels \\ nil) View Source

Construct a new dataset. A dataset is a list of tuples. With no arguments, an empty dataset with zero columns is constructed. Withf one argument a dataset is constructed with the passed object interpreted as rows and labels beginning with 0 are generated, the number of which are determined by size of the first tuple in the data.

iex> Dataset.new()
%Dataset{rows: [], labels: {}}

iex> Dataset.new([{:foo, :bar}, {:eggs, :ham}])
%Dataset{rows: [foo: :bar, eggs: :ham], labels: {0, 1}}

iex> Dataset.new([{0,0}, {1, 1}, {2, 4}, {3, 9}],
...>             {:x, :x_squared})
%Dataset{labels: {:x, :x_squared}, rows: [{0, 0}, {1, 1}, {2, 4}, {3, 9}]}
iex> Dataset.new([{:a,:b,:c},
...>              {:A, :B, :C},
...>              {:i, :ii, :iii},
...>              {:I, :II, :III}])
...> |> Dataset.rotate()
%Dataset{
  labels: {0, 1, 2, 3},
  rows: [{:a, :A, :i, :I},
         {:b, :B, :ii, :II},
         {:c, :C, :iii, :III}]
}