Method: Charty::VectorAdapters::NArrayAdapter#group_by

Defined in:
lib/charty/vector_adapters/narray_adapter.rb

#group_by(grouper) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/charty/vector_adapters/narray_adapter.rb', line 109

def group_by(grouper)
  case grouper
  when Charty::Vector
    # nothing to do
  else
    grouper = Charty::Vector.new(grouper)
  end

  group_keys = grouper.unique_values

  case grouper.data
  when Numo::NArray
    grouper = grouper.data
  else
    grouper = Numo::NArray[*grouper.to_a]
  end

  group_keys.map { |g|
    [g, Charty::Vector.new(data[grouper.eq(g)])]
  }.to_h
end