simple_time_series 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07a3e14fd7eff38cbdbb58579d7bebbc7e3899da
4
- data.tar.gz: 023551817a829f9bea6da942a8f627ad844796cc
3
+ metadata.gz: a33413b0800112a07b7b347449f23083d6818e21
4
+ data.tar.gz: eecea33cfd1e112e46dab628c0c998ccf79817fc
5
5
  SHA512:
6
- metadata.gz: 5062c774092d7ae6b36c8cb0af664c2b41796dc073bef4c99630946dd2df91e032cd3c30063aa570843e9aee3c5f85177b640ffd1e2e0e4acf44d3a575376817
7
- data.tar.gz: ca7130e239cf7cc6dcf6dcf83c84207983728a07827d0e04d86399db99f07b9073aeb1241b4b46327a3ffca6176275add7ab3f30080cb6d020ee395d6a10e0b3
6
+ metadata.gz: 4dbebf90278966bc1ac4310f8acbc01dd3fb57dada2c656fcb00fd51aff1704a32c80d6ce1c565ba6856e602321f264acee9d0898d4134adac457bd5ce03e76d
7
+ data.tar.gz: a2d325dcf5de97d353835e1170f41f94e89a5f5e7c778fbb11a89c86059f52c49308f77fe75a0ce0319e2818179b8847fd6fdc86f8cc30f1cf3ff6e8ad94f9ca
data/README.md CHANGED
@@ -201,6 +201,78 @@ It also calculates cumulative sums for any data_var:
201
201
  my_data.tasks_done_cumsum('Sunday','Monday') # returns [2, 5]
202
202
  my_data.tasks_done_cumsum('Tuesday','Saturday') # returns [5, 19, 22, 33, 33]
203
203
 
204
+ You can extract subsets of your data into arrays of arrays with #data_array:
205
+
206
+ my_data.data_array('tasks_done', {})
207
+ => [ [2, 3, 0, 14, 3, 11, 0] ]
208
+
209
+ my_data.data_array('dates', 'tasks_done', 'pizzas', {})
210
+ =>
211
+ [ ['2014-01-01', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06', '2014-01-07'],
212
+ [2, 3, 0, 14, 3, 11, 0],
213
+ [0, 0, 1, 0, 0.5, 0, 2] ]
214
+
215
+ You can tell it to prepend the variable name to each array:
216
+
217
+ my_data.data_array('tasks_done', {:prepend_names => true})
218
+ =>
219
+ [ ['tasks_done', 2, 3, 0, 14, 3, 11, 0] ]
220
+
221
+ my_data.data_array('miles', 'tasks_done', {:prepend_names => true})
222
+ =>
223
+ [ ['miles', 2.2, 3.1, 0.0, 4.3, 1.2, 12.2, 2.3],
224
+ ['tasks_done', 2, 3, 0, 14, 3, 11, 0] ]
225
+
226
+ my_data.data_array('dates', 'tasks_done', 'pizzas', {:prepend_names => true})
227
+ =>
228
+ [ ['dates', '2014-01-01', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06', '2014-01-07'],
229
+ ['tasks_done', 2, 3, 0, 14, 3, 11, 0],
230
+ ['pizzas', 0, 0, 1, 0, 0.5, 0, 2] ]
231
+
232
+ my_data.data_array('tasks_done', 'pizzas', {:start => 'Monday',
233
+ :end => 'Friday',
234
+ :prepend_names => true})
235
+ =>
236
+ [ ['tasks_done', 3, 0, 14, 3, 11],
237
+ ['pizzas', 0, 1, 0, 0.5, 0] ]
238
+
239
+ my_data.data_array('dates', 'tasks_done', 'pizzas', {:prepend_names => true,
240
+ :start => '2014-01-02',
241
+ :end => 'Saturday'})
242
+ =>
243
+ [ ['dates', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06', '2014-01-07'],
244
+ ['tasks_done', 3, 0, 14, 3, 11, 0],
245
+ ['pizzas', 0, 1, 0, 0.5, 0, 2] ]
246
+
247
+ my_data.data_array('tasks_done', {:prepend_names => true})
248
+ =>
249
+ [ ['tasks_done', 2, 3, 0, 14, 3, 11, 0] ]
250
+
251
+ my_data.data_array('miles', 'tasks_done', {:prepend_names => true})
252
+ =>
253
+ [ ['miles', 2.2, 3.1, 0.0, 4.3, 1.2, 12.2, 2.3],
254
+ ['tasks_done', 2, 3, 0, 14, 3, 11, 0] ]
255
+
256
+ my_data.data_array('dates', 'tasks_done', 'pizzas', {:prepend_names => true})
257
+ =>
258
+ [ ['dates', '2014-01-01', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06', '2014-01-07'],
259
+ ['tasks_done', 2, 3, 0, 14, 3, 11, 0],
260
+ ['pizzas', 0, 0, 1, 0, 0.5, 0, 2] ]
261
+
262
+ my_data.data_array('tasks_done', 'pizzas', {:start => 'Monday', :end => 'Friday',
263
+ :prepend_names => true}).
264
+ =>
265
+ [ ['tasks_done', 3, 0, 14, 3, 11],
266
+ ['pizzas', 0, 1, 0, 0.5, 0] ]
267
+
268
+ my_data.data_array('dates', 'tasks_done', 'pizzas', {:prepend_names => true,
269
+ :start => '2014-01-02',
270
+ :end => 'Saturday'})
271
+ =>
272
+ [ ['dates', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06', '2014-01-07'],
273
+ ['tasks_done', 3, 0, 14, 3, 11, 0],
274
+ ['pizzas', 0, 1, 0, 0.5, 0, 2] ]
275
+
204
276
  Currently, SimpleTimeSeries assumes all variable arrays have equal lengths and represent the same sequence of observations. Though the gem says "time series," it should work with any kind of sequential data.
205
277
 
206
278
  ## Disclaimer
@@ -61,6 +61,7 @@ class SimpleTimeSeries
61
61
  define_getter_and_setter(var)
62
62
  instance_variable_set("@#{var}", vals) if vals
63
63
  time_vars[var] = vals unless time_vars.has_key?(var)
64
+ define_var_on(var)
64
65
  end
65
66
 
66
67
  def new_data_var(var, vals)
@@ -100,6 +101,16 @@ class SimpleTimeSeries
100
101
  return answer.length == 1 ? answer[0] : answer
101
102
  end
102
103
  end
104
+ end
105
+ define_var_on(var)
106
+ instance_variable_set("@#{var}", vals) if vals
107
+ data_vars[var] = vals unless data_vars.has_key?(var)
108
+ end
109
+
110
+ private
111
+
112
+ def define_var_on(var)
113
+ self.class.class_eval do
103
114
  define_method("#{var}_on") do |first, last=nil, opts={}|
104
115
  time_vars.each do |tv_key, tv_val|
105
116
  # tv_key is something like 'dows' or 'dates'
@@ -119,12 +130,8 @@ class SimpleTimeSeries
119
130
  end
120
131
  end
121
132
  end
122
- instance_variable_set("@#{var}", vals) if vals
123
- data_vars[var] = vals unless data_vars.has_key?(var)
124
133
  end
125
134
 
126
- private
127
-
128
135
  def define_time_methods_and_set_values
129
136
  time_vars.each do |var, vals|
130
137
  new_time_var(var, vals)
@@ -1,3 +1,3 @@
1
1
  class SimpleTimeSeries
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -279,10 +279,10 @@ describe SimpleTimeSeries do
279
279
  it "builds an array of specified arrays" do
280
280
  @my_data.data_array('tasks_done', {}).should == [ @my_data.current('tasks_done') ]
281
281
  @my_data.data_array('tasks_done', {}).should == [ [2, 3, 0, 14, 3, 11, 0] ]
282
- @my_data.data_array('dates', 'tasks_done', 'pizzas', {}).
283
- should == [ @my_data.current('dates'),
284
- @my_data.current('tasks_done'),
285
- @my_data.current('pizzas') ]
282
+ @my_data.data_array('dates', 'tasks_done', 'pizzas', {}).should ==
283
+ [ ['2014-01-01', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06', '2014-01-07'],
284
+ [2, 3, 0, 14, 3, 11, 0],
285
+ [0, 0, 1, 0, 0.5, 0, 2] ]
286
286
  @my_data.data_array('tasks_done', 'pizzas', {:start => 'Tuesday', :end => 'Thursday'}).
287
287
  should == [ @my_data.find('tasks_done','Tuesday','Thursday'),
288
288
  @my_data.find('pizzas', '2014-01-03', 'Jan 5, 2014') ]
@@ -305,10 +305,12 @@ describe SimpleTimeSeries do
305
305
  :prepend_names => true}).
306
306
  should == [ ['tasks_done', 3, 0, 14, 3, 11],
307
307
  ['pizzas', 0, 1, 0, 0.5, 0] ]
308
- #should == [ ['tasks_done', 3, 0, 14, 3, 11], ['pizzas', 0, 1, 0, 0.5, 0] ]
309
- #should == [ ['tasks_done', 3, 0, 14, 3, 11], ['pizzas', 0, 1, 0, 0.5, 0] ]
310
- #should == [ @my_data.find('tasks_done','Tuesday','Thursday'),
311
- # @my_data.find('pizzas', '2014-01-03', 'Jan 5, 2014') ]
308
+ @my_data.data_array('dates', 'tasks_done', 'pizzas', {:prepend_names => true,
309
+ :start => '2014-01-02',
310
+ :end => 'Saturday'}).
311
+ should == [ ['dates', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06', '2014-01-07'],
312
+ ['tasks_done', 3, 0, 14, 3, 11, 0],
313
+ ['pizzas', 0, 1, 0, 0.5, 0, 2] ]
312
314
  end
313
315
 
314
316
  #it "builds an array of specified arrays with variable names prepended to each array" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_time_series
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Lavin