Current section
Files
Jump to
Current section
Files
lib/dataset.ex
defmodule Dataset do
defstruct rows: [], labels: {}
def new(rows \\ [], labels \\ {}) do
%Dataset{rows: rows, labels: labels}
end
def to_map_list(_ds = %Dataset{rows: rows, labels: labels}) do
for row <- rows do
Map.new(tuple_zip(labels, row))
end
end
defp tuple_zip(t1, t2) do
for i <- 0..(tuple_size(t1) - 1) do
{elem(t1, i), elem(t2, i)}
end
end
@doc ~S"""
iex> Dataset.new([{:a,:b,:c},
...> {:A, :B, :C},
...> {:i, :ii, :iii},
...> {:I, :II, :III}])
...> |> Dataset.rotate()
%Dataset{
labels: {},
rows: [{:a, :A, :i, :I},
{:b, :B, :ii, :II},
{:c, :C, :iii, :III}]
}
"""
def rotate(%Dataset{rows: in_rows}) do
for i <- 0..(tuple_size(List.first(in_rows)) - 1) do
List.to_tuple(for in_row <- in_rows, do: elem(in_row, i))
end
|> Dataset.new()
end
end