class CADataFrame::Arranger
Public Class Methods
new(dataframe)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 9 def initialize (dataframe) @dataframe = dataframe end
Public Instance Methods
arrange(&block)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 13 def arrange (&block) case block.arity when 1 instance_exec(@dataframe, &block) else instance_exec(&block) end return @dataframe end
Private Instance Methods
append(name, new_column)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 130 def append (name, new_column) if new_column # do nothing else new_column = @dataframe.columns.first[1].template(:object) end unless new_column.is_a?(CArray) new_column = new_column.to_ca end @dataframe.columns[name.to_s] = new_column @dataframe.column_names.push(name.to_s) end
classify(name, scale, opt = {})
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 172 def classify (name, scale, opt = {}) return @dataframe.classify(name, scale, opt) end
col(name)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 126 def col (name) return @dataframe.col(name) end
column_names()
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 28 def column_names return @dataframe.column_names end
double(*names)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 82 def double (*names) names.flatten.map(&:to_s).each do |name| if @dataframe.column_names.include?(name) type(:double, name) else raise "Unknown column name '#{name}'" end end end
downcase()
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 168 def downcase @dataframe.downcase end
eliminate(*names)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 63 def eliminate (*names) if names.empty? return self end names = names.map(&:to_s) @dataframe.column_names.clone.each do |name| if names.include?(name) @dataframe.columns.delete(name) @dataframe.column_names.delete(name) end end end
Also aliased as: drop
index()
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 24 def index return @dataframe.index end
int(*names)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 92 def int (*names) names.flatten.map(&:to_s).each do |name| if @dataframe.column_names.include?(name) type(:int, name) else raise "Unknown column name '#{name}'" end end end
map(mapper, name_or_column)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 176 def map (mapper, name_or_column) case name_or_column when String, Symbol name = name_or_column column = @dataframe.columns[name.to_s] when CArray column = name_or_column when Array column = name_or_column.to_ca else raise "invalid argument" end case mapper when Hash return column.convert(:object) {|v| hash[v] } when CArray return mapper.project(column) when Array return mapper.to_ca.project(column) end end
mask(name, *values)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 109 def mask (name, *values) column = @dataframe.columns[name.to_s] values.each do |args| if args.nil? column.maskout!(nil) else column.maskout!(*args) end end end
maskout(value, *names)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 102 def maskout (value, *names) warn "maskout is obsolete. use mask(name, *values)" names.flatten.map(&:to_s).each do |name| @dataframe.columns[name].maskout!(value) end end
method(hash)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 40 def method (hash) @dataframe.method(hash) end
method_missing(name, *args)
click to toggle source
Calls superclass method
# File lib/carray-dataframe/arranger.rb, line 198 def method_missing (name, *args) if args.size == 0 if @dataframe.column_names.include?(name.to_s) return @dataframe.columns[name.to_s] elsif @dataframe.__methods__.include?(name.to_s) return @dataframe.columns[@dataframe.__methods__[name.to_s]] end end super end
prepend(name, new_column)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 143 def prepend (name, new_column) if new_column # do nothing else new_column = @dataframe.columns.first[1].template(:object) end unless new_column.is_a?(CArray) new_column = new_column.to_ca end @dataframe.columns[name.to_s] = new_column @dataframe.column_names.unshift(name.to_s) end
Also aliased as: lead
rename(name1, name2)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 157 def rename (name1, name2) if idx = @dataframe.column_names.index(name1.to_s) @dataframe.column_names[idx] = name2.to_s column = @dataframe.columns[name1.to_s] @dataframe.columns.delete(name1.to_s) @dataframe.columns[name2.to_s] = column else raise "unknown column name #{name1}" end end
row_index()
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 36 def row_index return @dataframe.row_index end
row_number()
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 32 def row_number return @dataframe.row_number end
template(*args, &block)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 78 def template (*args, &block) return @dataframe.columns.first[1].template(*args, &block) end
timeindex(name, unit: "second", since: nil, offset: nil, format: nil)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 50 def timeindex (name, unit: "second", since: nil, offset: nil, format: nil) time_column = @dataframe.columns[name.to_s] column = CATimeIndex.from_time_array(time_column, unit, since: since, format: format, offset: offset) @dataframe.columns[name.to_s] = column end
timeseries(name, format)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 44 def timeseries (name, format) time_column = @dataframe.columns[name.to_s] column = CATimeIndex.from_time_array(time_column, "sec", format: format) @dataframe.columns[name.to_s] = column end
type(type, name, mask = :novalue)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 56 def type (type, name, mask = :novalue) @dataframe.columns[name.to_s] = @dataframe.columns[name.to_s].to_type(type) if mask != :novalue @dataframe.columns[name.to_s].maskout!(options[:maskout]) end end
unmask(value, *names)
click to toggle source
# File lib/carray-dataframe/arranger.rb, line 120 def unmask (value, *names) names.flatten.map(&:to_s).each do |name| @dataframe.columns[name].unmask(value) end end