Class: Charty::Table::HashGroupBy
- Inherits:
-
GroupByBase
- Object
- GroupByBase
- Charty::Table::HashGroupBy
- Defined in:
- lib/charty/table.rb
Instance Method Summary collapse
- #[](key) ⇒ Object
- #apply(*args, &block) ⇒ Object
- #each_group ⇒ Object
- #each_group_key(&block) ⇒ Object
- #group_keys ⇒ Object
- #indices ⇒ Object
-
#initialize(table, grouper, sort, drop_na) ⇒ HashGroupBy
constructor
A new instance of HashGroupBy.
Constructor Details
#initialize(table, grouper, sort, drop_na) ⇒ HashGroupBy
Returns a new instance of HashGroupBy.
137 138 139 140 141 |
# File 'lib/charty/table.rb', line 137 def initialize(table, grouper, sort, drop_na) @table = table @grouper = check_grouper(grouper) init_groups(sort, drop_na) end |
Instance Method Details
#[](key) ⇒ Object
224 225 226 227 228 229 230 231 232 233 234 |
# File 'lib/charty/table.rb', line 224 def [](key) return nil unless @indices.key?(key) index = @indices[key] Charty::Table.new( @table.column_names.map {|col| [col, @table[col].values_at(*index)] }.to_h, index: index ) end |
#apply(*args, &block) ⇒ Object
207 208 209 210 211 212 213 214 |
# File 'lib/charty/table.rb', line 207 def apply(*args, &block) Charty::Table.new( each_group.map { |_key, table| block.call(table, *args) }, index: Charty::Index.new(@indices.keys, name: @grouper) ) end |
#each_group ⇒ Object
216 217 218 219 220 221 222 |
# File 'lib/charty/table.rb', line 216 def each_group return enum_for(__method__) unless block_given? @indices.each_key do |key| yield(key, self[key]) end end |
#each_group_key(&block) ⇒ Object
203 204 205 |
# File 'lib/charty/table.rb', line 203 def each_group_key(&block) @indices.each_key(&block) end |
#group_keys ⇒ Object
199 200 201 |
# File 'lib/charty/table.rb', line 199 def group_keys @indices.keys end |
#indices ⇒ Object
195 196 197 |
# File 'lib/charty/table.rb', line 195 def indices @indices.dup end |