davidrichards-data_frame 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 8
4
+ :patch: 9
data/lib/data_frame.rb CHANGED
@@ -4,6 +4,14 @@ require 'just_enumerable_stats'
4
4
  require 'open-uri'
5
5
  require 'fastercsv'
6
6
 
7
+ # Use a Dictionary if available
8
+ begin
9
+ require 'facets/dictionary'
10
+ rescue LoadError => e
11
+ # Do nothing
12
+ end
13
+
14
+
7
15
  Dir.glob("#{File.dirname(__FILE__)}/ext/*.rb").each { |file| require file }
8
16
 
9
17
  $:.unshift(File.dirname(__FILE__))
@@ -94,6 +102,25 @@ class DataFrame
94
102
  @items.transpose[i]
95
103
  end
96
104
 
105
+ # The rows as an array of arrays, an alias for items.
106
+ alias :rows :items
107
+
108
+ # The columns as a Dictionary or Hash
109
+ # This is cached, call columns(true) to reset the cache.
110
+ def columns(reset=false)
111
+ @columns = nil if reset
112
+ return @columns if @columns
113
+
114
+ container = defined?(Dictionary) ? Dictionary.new : Hash.new
115
+ i = 0
116
+
117
+ @columns = @items.transpose.inject(container) do |cont, col|
118
+ cont[@labels[i]] = col
119
+ i += 1
120
+ cont
121
+ end
122
+ end
123
+
97
124
  def render_row(sym)
98
125
  i = self.row_labels.index(sym)
99
126
  return nil unless i
@@ -101,5 +101,18 @@ describe DataFrame do
101
101
  @df.labels.should eql([:threes, :fours])
102
102
  end
103
103
 
104
+ it "should offer a hash-like structure of columns" do
105
+ @df.add [1,2,3,4]
106
+ @df.add [5, 6, 7, 8]
107
+ @df.columns[:these].should eql([1, 5])
108
+ @df.columns[:are].should eql([2, 6])
109
+ @df.columns[:the].should eql([3, 7])
110
+ @df.columns[:labels].should eql([4, 8])
111
+ end
104
112
 
113
+ it "should alias items with rows" do
114
+ @df.add [1,2,3,4]
115
+ @df.add [5, 6, 7, 8]
116
+ @df.rows.should eql(@df.items)
117
+ end
105
118
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: davidrichards-data_frame
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Richards
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-03 00:00:00 -07:00
12
+ date: 2009-08-04 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency