simple_time_series 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|