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 +4 -4
- data/README.md +72 -0
- data/lib/simple_time_series/simple_time_series.rb +11 -4
- data/lib/simple_time_series/version.rb +1 -1
- data/spec/lib/simple_time_series_spec.rb +10 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a33413b0800112a07b7b347449f23083d6818e21
|
4
|
+
data.tar.gz: eecea33cfd1e112e46dab628c0c998ccf79817fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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)
|
@@ -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
|
-
|
284
|
-
|
285
|
-
|
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
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
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
|