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
drop(*names)
Alias for: eliminate
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
lead(name, new_column)
Alias for: prepend
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