red_amber 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +11 -5
- data/CHANGELOG.md +93 -1
- data/Gemfile +5 -6
- data/README.ja.md +252 -0
- data/README.md +30 -23
- data/benchmark/basic.yml +1 -1
- data/benchmark/group.yml +12 -5
- data/doc/CODE_OF_CONDUCT.md +1 -1
- data/docker/.env +4 -0
- data/docker/Dockerfile +66 -0
- data/docker/Gemfile +26 -0
- data/docker/Gemfile.lock +118 -0
- data/docker/docker-compose.yml +21 -0
- data/docker/example +86 -0
- data/docker/notebook/examples_of_red_amber.ipynb +8562 -0
- data/docker/notebook/red-amber.ipynb +188 -0
- data/docker/readme.md +118 -0
- data/lib/red_amber/data_frame.rb +78 -4
- data/lib/red_amber/data_frame_combinable.rb +147 -119
- data/lib/red_amber/data_frame_displayable.rb +6 -5
- data/lib/red_amber/data_frame_selectable.rb +49 -0
- data/lib/red_amber/group.rb +190 -89
- data/lib/red_amber/helper.rb +26 -0
- data/lib/red_amber/subframes.rb +166 -66
- data/lib/red_amber/vector.rb +43 -24
- data/lib/red_amber/vector_aggregation.rb +26 -0
- data/lib/red_amber/vector_binary_element_wise.rb +54 -25
- data/lib/red_amber/vector_selectable.rb +74 -23
- data/lib/red_amber/vector_string_function.rb +211 -0
- data/lib/red_amber/vector_unary_element_wise.rb +4 -0
- data/lib/red_amber/vector_updatable.rb +28 -0
- data/lib/red_amber/version.rb +1 -1
- data/lib/red_amber.rb +2 -1
- data/red_amber.gemspec +4 -4
- metadata +20 -9
@@ -153,10 +153,23 @@ module RedAmber
|
|
153
153
|
# @param element
|
154
154
|
# an element of self.
|
155
155
|
# @return [integer, nil]
|
156
|
-
#
|
156
|
+
# position of element. If it is not found, returns nil.
|
157
157
|
#
|
158
158
|
def index(element)
|
159
|
-
|
159
|
+
if element.nil?
|
160
|
+
datum = find(:is_null).execute([data])
|
161
|
+
value = Arrow::Scalar.resolve(true, :boolean)
|
162
|
+
else
|
163
|
+
datum = data
|
164
|
+
value = Arrow::Scalar.resolve(element, type)
|
165
|
+
end
|
166
|
+
datum = find(:index).execute([datum], value: value)
|
167
|
+
index = get_scalar(datum)
|
168
|
+
if index.negative?
|
169
|
+
nil
|
170
|
+
else
|
171
|
+
index
|
172
|
+
end
|
160
173
|
end
|
161
174
|
|
162
175
|
# Returns first element of self.
|
@@ -229,15 +242,23 @@ module RedAmber
|
|
229
242
|
take(sort_indices(order: order))
|
230
243
|
end
|
231
244
|
|
232
|
-
# Returns numerical rank of self.
|
245
|
+
# Returns 0-based numerical rank of self.
|
233
246
|
# - Nil values are considered greater than any value.
|
234
247
|
# - NaN values are considered greater than any value but smaller than nil values.
|
235
|
-
# - Tiebreakers are ranked in order of appearance
|
248
|
+
# - Tiebreakers are ranked in order of appearance by default or
|
249
|
+
# with `tie: :first` option.
|
236
250
|
# - `RankOptions` in C++ function is not implemented in C GLib yet.
|
237
251
|
# This method is currently fixed to the default behavior.
|
238
252
|
#
|
253
|
+
# @param tie [:first, :min, :max, :dense]
|
254
|
+
# configure how ties between equal values are handled.
|
255
|
+
# - first: Ranks are assigned in order of when ties appear in the input.
|
256
|
+
# - min: Ties get the smallest possible rank in the sorted order.
|
257
|
+
# - max: Ties get the largest possible rank in the sorted order.
|
258
|
+
# - dense: The ranks span a dense [1, M] interval where M is the number
|
259
|
+
# of distinct values in the input.
|
239
260
|
# @return [Vector]
|
240
|
-
# 0-based rank of self (0...size in range).
|
261
|
+
# 0-based rank in uint64 of self (0...size in range).
|
241
262
|
# @example Rank of float Vector
|
242
263
|
# fv = Vector.new(0.1, nil, Float::NAN, 0.2, 0.1); fv
|
243
264
|
#
|
@@ -245,7 +266,7 @@ module RedAmber
|
|
245
266
|
# #<RedAmber::Vector(:double, size=5):0x000000000000c65c>
|
246
267
|
# [0.1, nil, NaN, 0.2, 0.1]
|
247
268
|
#
|
248
|
-
# fv.rank
|
269
|
+
# fv.rank # or fv.rank(tie: :first)
|
249
270
|
#
|
250
271
|
# # =>
|
251
272
|
# #<RedAmber::Vector(:uint64, size=5):0x0000000000003868>
|
@@ -264,20 +285,42 @@ module RedAmber
|
|
264
285
|
# #<RedAmber::Vector(:uint64, size=5):0x0000000000003868>
|
265
286
|
# [0, 2, 4, 1, 3]
|
266
287
|
#
|
288
|
+
# @example Rank of Float Vector with tie: :min
|
289
|
+
# fv.rank(tie: :min)
|
290
|
+
#
|
291
|
+
# # =>
|
292
|
+
# #<RedAmber::Vector(:uint64, size=5):0x00000000001593ac>
|
293
|
+
# [0, 3, 3, 2, 0]
|
294
|
+
#
|
295
|
+
# @example Rank of Float Vector with tie: :max
|
296
|
+
# fv.rank(tie: :max)
|
297
|
+
#
|
298
|
+
# # =>
|
299
|
+
# #<RedAmber::Vector(:uint64, size=5):0x0000000000160d50>
|
300
|
+
# [1, 4, 4, 2, 1]
|
301
|
+
#
|
302
|
+
# @example Rank of Float Vector with tie: :dense
|
303
|
+
# fv.rank(tie: :dense)
|
304
|
+
#
|
305
|
+
# # =>
|
306
|
+
# #<RedAmber::Vector(:uint64, size=5):0x000000000016993c>
|
307
|
+
# [0, 2, 2, 1, 0]
|
308
|
+
#
|
267
309
|
# @since 0.4.0
|
268
310
|
#
|
269
|
-
def rank
|
311
|
+
def rank(tie: :first)
|
270
312
|
datum =
|
271
313
|
case data
|
272
314
|
when Arrow::ChunkedArray
|
273
|
-
|
315
|
+
find(:rank).execute([data.pack], tiebreaker: tie)
|
274
316
|
else
|
275
|
-
|
317
|
+
find(:rank).execute([data], tiebreaker: tie)
|
276
318
|
end
|
277
|
-
Vector.create(datum.value)
|
319
|
+
Vector.create(find(:subtract).execute([datum, 1]).value)
|
278
320
|
end
|
279
321
|
|
280
322
|
# Pick up elements at random.
|
323
|
+
# @note This method requires 'arrow-numo-narray' gem.
|
281
324
|
#
|
282
325
|
# @overload sample()
|
283
326
|
# Return a randomly selected element.
|
@@ -298,12 +341,12 @@ module RedAmber
|
|
298
341
|
# "C"
|
299
342
|
#
|
300
343
|
# @overload sample(n)
|
301
|
-
#
|
344
|
+
# Select n elements at random.
|
302
345
|
#
|
303
346
|
# @param n [Integer]
|
304
|
-
# positive number of elements to
|
305
|
-
# If n is smaller or equal to size, elements are
|
306
|
-
# If n is greater than `size`, elements are
|
347
|
+
# positive number of elements to select.
|
348
|
+
# If n is smaller or equal to size, elements are selected by non-repeating.
|
349
|
+
# If n is greater than `size`, elements are selected repeatedly.
|
307
350
|
# @return [Vector]
|
308
351
|
# sampled elements.
|
309
352
|
# If n == 1 (in case of `sample(1)`), it returns a Vector of size == 1
|
@@ -315,7 +358,7 @@ module RedAmber
|
|
315
358
|
# #<RedAmber::Vector(:string, size=1):0x000000000001a3b0>
|
316
359
|
# ["H"]
|
317
360
|
#
|
318
|
-
# @example Sample same size of self: every element is
|
361
|
+
# @example Sample same size of self: every element is selected in random order
|
319
362
|
# v.sample(8)
|
320
363
|
#
|
321
364
|
# # =>
|
@@ -330,18 +373,18 @@ module RedAmber
|
|
330
373
|
# ["E", "E", "A", "D", "H", "C", "A", "F", "H"]
|
331
374
|
#
|
332
375
|
# @overload sample(prop)
|
333
|
-
#
|
376
|
+
# Select elements by proportion `prop` at random.
|
334
377
|
#
|
335
378
|
# @param prop [Float]
|
336
|
-
# positive proportion of elements to
|
337
|
-
# Absolute number of elements to
|
338
|
-
# If prop is smaller or equal to 1.0, elements are
|
339
|
-
# If prop is greater than 1.0, some elements are
|
379
|
+
# positive proportion of elements to select.
|
380
|
+
# Absolute number of elements to select:`prop*size` is rounded (by `half: :up`).
|
381
|
+
# If prop is smaller or equal to 1.0, elements are selected by non-repeating.
|
382
|
+
# If prop is greater than 1.0, some elements are selected repeatedly.
|
340
383
|
# @return [Vector]
|
341
384
|
# sampled elements.
|
342
|
-
# If
|
385
|
+
# If selected element is only one, it returns a Vector of size == 1
|
343
386
|
# not a scalar.
|
344
|
-
# @example Sample same size of self: every element is
|
387
|
+
# @example Sample same size of self: every element is selected in random order
|
345
388
|
# v.sample(1.0)
|
346
389
|
#
|
347
390
|
# # =>
|
@@ -355,6 +398,14 @@ module RedAmber
|
|
355
398
|
# #<RedAmber::Vector(:string, size=16):0x00000000000233e8>
|
356
399
|
# ["H", "B", "C", "B", "C", "A", "F", "A", "E", "C", "H", "F", "F", "A", ... ]
|
357
400
|
#
|
401
|
+
# @example prop less than 1.0
|
402
|
+
# v.sample(0.7)
|
403
|
+
#
|
404
|
+
# # =>
|
405
|
+
# # Take (8 * 0.7).truncate => 5 samples
|
406
|
+
# #<RedAmber::Vector(:string, size=5):0x000000000001afe0>
|
407
|
+
# ["C", "A", "E", "H", "D"]
|
408
|
+
#
|
358
409
|
# @since 0.4.0
|
359
410
|
#
|
360
411
|
def sample(n_or_prop = nil)
|
@@ -367,7 +418,7 @@ module RedAmber
|
|
367
418
|
in Integer
|
368
419
|
n_or_prop
|
369
420
|
in Float
|
370
|
-
(n_or_prop * size).
|
421
|
+
(n_or_prop * size).truncate
|
371
422
|
in nil
|
372
423
|
return to_a.sample
|
373
424
|
else
|
@@ -0,0 +1,211 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RedAmber
|
4
|
+
# Mix-in for class Vector
|
5
|
+
# Methods for string-like related function
|
6
|
+
module VectorStringFunction
|
7
|
+
using RefineArray
|
8
|
+
using RefineArrayLike
|
9
|
+
|
10
|
+
# For each string in self, emit true if it contains a given pattern.
|
11
|
+
#
|
12
|
+
# @overload match_substring?(string, ignore_case: nil)
|
13
|
+
# Emit true if it contains `string`.
|
14
|
+
#
|
15
|
+
# @param string [String]
|
16
|
+
# string pattern to match.
|
17
|
+
# @param ignore_case [boolean]
|
18
|
+
# switch whether to ignore case. Ignore case if true.
|
19
|
+
# @return [Vector]
|
20
|
+
# boolean Vector to show if elements contain a given pattern.
|
21
|
+
# nil inputs emit nil.
|
22
|
+
# @example Match with string.
|
23
|
+
# vector = Vector.new('array', 'Arrow', 'carrot', nil, 'window')
|
24
|
+
# vector.match_substring?('arr')
|
25
|
+
# # =>
|
26
|
+
# #<RedAmber::Vector(:boolean, size=5):0x000000000005a208>
|
27
|
+
# [true, false, true, nil, false]
|
28
|
+
#
|
29
|
+
# @overload match_substring?(regexp, ignore_case: nil)
|
30
|
+
# Emit true if it contains substring matching with `regexp`.
|
31
|
+
# It calls `match_substring_regex` in Arrow compute function and
|
32
|
+
# uses re2 library.
|
33
|
+
#
|
34
|
+
# @param regexp [Regexp]
|
35
|
+
# regular expression pattern to match. Ruby's Regexp is given and
|
36
|
+
# it will passed to Arrow's kernel by its source.
|
37
|
+
# @param ignore_case [boolean]
|
38
|
+
# switch whether to ignore case. Ignore case if true.
|
39
|
+
# When `ignore_case` is false, casefolding option in regexp is priortized.
|
40
|
+
# @return [Vector]
|
41
|
+
# boolean Vector to show if elements contain a given pattern.
|
42
|
+
# nil inputs emit nil.
|
43
|
+
# @example Match with regexp.
|
44
|
+
# vector.match_substring?(/arr/)
|
45
|
+
# # =>
|
46
|
+
# #<RedAmber::Vector(:boolean, size=5):0x0000000000014b68>
|
47
|
+
# [true, false, true, nil, false]
|
48
|
+
#
|
49
|
+
# @since 0.5.0
|
50
|
+
#
|
51
|
+
def match_substring?(pattern, ignore_case: nil)
|
52
|
+
options = Arrow::MatchSubstringOptions.new
|
53
|
+
datum =
|
54
|
+
case pattern
|
55
|
+
when String
|
56
|
+
options.ignore_case = (ignore_case || false)
|
57
|
+
options.pattern = pattern
|
58
|
+
find(:match_substring).execute([data], options)
|
59
|
+
when Regexp
|
60
|
+
options.ignore_case = (pattern.casefold? || ignore_case || false)
|
61
|
+
options.pattern = pattern.source
|
62
|
+
find(:match_substring_regex).execute([data], options)
|
63
|
+
else
|
64
|
+
message =
|
65
|
+
"pattern must be either String or Regexp: #{pattern.inspect}"
|
66
|
+
raise VectorArgumentError, message
|
67
|
+
end
|
68
|
+
Vector.create(datum.value)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Check if elements in self end with a literal pattern.
|
72
|
+
#
|
73
|
+
# @param string [String]
|
74
|
+
# string pattern to match.
|
75
|
+
# @param ignore_case [boolean]
|
76
|
+
# switch whether to ignore case. Ignore case if true.
|
77
|
+
# @return [Vector]
|
78
|
+
# boolean Vector to show if elements end with a given pattern.
|
79
|
+
# nil inputs emit nil.
|
80
|
+
# @example Check if end with?.
|
81
|
+
# vector = Vector.new('array', 'Arrow', 'carrot', nil, 'window')
|
82
|
+
# vector.end_with?('ow')
|
83
|
+
# # =>
|
84
|
+
# #<RedAmber::Vector(:boolean, size=5):0x00000000000108ec>
|
85
|
+
# [false, true, false, nil, true]
|
86
|
+
# @since 0.5.0
|
87
|
+
#
|
88
|
+
def end_with?(string, ignore_case: nil)
|
89
|
+
options = Arrow::MatchSubstringOptions.new
|
90
|
+
options.ignore_case = (ignore_case || false)
|
91
|
+
options.pattern = string
|
92
|
+
datum = find(:ends_with).execute([data], options)
|
93
|
+
Vector.create(datum.value)
|
94
|
+
end
|
95
|
+
|
96
|
+
# Check if elements in self start with a literal pattern.
|
97
|
+
#
|
98
|
+
# @param string [String]
|
99
|
+
# string pattern to match.
|
100
|
+
# @param ignore_case [boolean]
|
101
|
+
# switch whether to ignore case. Ignore case if true.
|
102
|
+
# @return [Vector]
|
103
|
+
# boolean Vector to show if elements start with a given pattern.
|
104
|
+
# nil inputs emit nil.
|
105
|
+
# @example Check if start with?.
|
106
|
+
# vector = Vector.new('array', 'Arrow', 'carrot', nil, 'window')
|
107
|
+
# vector.start_with?('ow')
|
108
|
+
# # =>
|
109
|
+
# #<RedAmber::Vector(:boolean, size=5):0x00000000000193fc>
|
110
|
+
# [false, false, true, nil, false]
|
111
|
+
# @since 0.5.0
|
112
|
+
#
|
113
|
+
def start_with?(string, ignore_case: nil)
|
114
|
+
options = Arrow::MatchSubstringOptions.new
|
115
|
+
options.ignore_case = (ignore_case || false)
|
116
|
+
options.pattern = string
|
117
|
+
datum = find(:starts_with).execute([data], options)
|
118
|
+
Vector.create(datum.value)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Match elements of self against SQL-style LIKE pattern.
|
122
|
+
# the pattern matches a given pattern at any position.
|
123
|
+
# '%' will match any number of characters,
|
124
|
+
# '_' will match exactly one character,
|
125
|
+
# and any other character matches itself.
|
126
|
+
# To match a literal '%', '_', or '\', precede the character with a backslash.
|
127
|
+
#
|
128
|
+
# @param string [String]
|
129
|
+
# string pattern to match.
|
130
|
+
# @param ignore_case [boolean]
|
131
|
+
# switch whether to ignore case. Ignore case if true.
|
132
|
+
# @return [Vector]
|
133
|
+
# boolean Vector to show if elements start with a given pattern.
|
134
|
+
# nil inputs emit nil.
|
135
|
+
# @example Check with match_like?.
|
136
|
+
# vector = Vector.new('array', 'Arrow', 'carrot', nil, 'window')
|
137
|
+
# vector.match_like?('_rr%')
|
138
|
+
# # =>
|
139
|
+
# @since 0.5.0
|
140
|
+
#
|
141
|
+
def match_like?(string, ignore_case: nil)
|
142
|
+
options = Arrow::MatchSubstringOptions.new
|
143
|
+
options.ignore_case = (ignore_case || false)
|
144
|
+
options.pattern = string
|
145
|
+
datum = find(:match_like).execute([data], options)
|
146
|
+
Vector.create(datum.value)
|
147
|
+
end
|
148
|
+
|
149
|
+
# For each string in self, count occuerences of substring in given pattern.
|
150
|
+
#
|
151
|
+
# @overload count_substring(string, ignore_case: nil)
|
152
|
+
# Count if it contains `string`.
|
153
|
+
#
|
154
|
+
# @param string [String]
|
155
|
+
# string pattern to count.
|
156
|
+
# @param ignore_case [boolean]
|
157
|
+
# switch whether to ignore case. Ignore case if true.
|
158
|
+
# @return [Vector]
|
159
|
+
# int32 or int64 Vector to show if elements contain a given pattern.
|
160
|
+
# nil inputs emit nil.
|
161
|
+
# @example Count with string.
|
162
|
+
# vector2 = Vector.new('amber', 'Amazon', 'banana', nil)
|
163
|
+
# vector2.count_substring('an')
|
164
|
+
# # =>
|
165
|
+
# #<RedAmber::Vector(:int32, size=4):0x000000000003db30>
|
166
|
+
# [0, 0, 2, nil]
|
167
|
+
#
|
168
|
+
# @overload count_substring(regexp, ignore_case: nil)
|
169
|
+
# Count if it contains substring matching with `regexp`.
|
170
|
+
# It calls `count_substring_regex` in Arrow compute function and
|
171
|
+
# uses re2 library.
|
172
|
+
#
|
173
|
+
# @param regexp [Regexp]
|
174
|
+
# regular expression pattern to count. Ruby's Regexp is given and
|
175
|
+
# it will passed to Arrow's kernel by its source.
|
176
|
+
# @param ignore_case [boolean]
|
177
|
+
# switch whether to ignore case. Ignore case if true.
|
178
|
+
# When `ignore_case` is false, casefolding option in regexp is priortized.
|
179
|
+
# @return [Vector]
|
180
|
+
# int32 or int64 Vector to show the counts in given pattern.
|
181
|
+
# nil inputs emit nil.
|
182
|
+
# @example Count with regexp with case ignored.
|
183
|
+
# vector2.count_substring(/a[mn]/i)
|
184
|
+
# # =>
|
185
|
+
# #<RedAmber::Vector(:int32, size=4):0x0000000000051298>
|
186
|
+
# [1, 1, 2, nil]
|
187
|
+
# # it is same result as `vector2.count_substring(/a[mn]/, ignore_case: true)`
|
188
|
+
#
|
189
|
+
# @since 0.5.0
|
190
|
+
#
|
191
|
+
def count_substring(pattern, ignore_case: nil)
|
192
|
+
options = Arrow::MatchSubstringOptions.new
|
193
|
+
datum =
|
194
|
+
case pattern
|
195
|
+
when String
|
196
|
+
options.ignore_case = (ignore_case || false)
|
197
|
+
options.pattern = pattern
|
198
|
+
find(:count_substring).execute([data], options)
|
199
|
+
when Regexp
|
200
|
+
options.ignore_case = (pattern.casefold? || ignore_case || false)
|
201
|
+
options.pattern = pattern.source
|
202
|
+
find(:count_substring_regex).execute([data], options)
|
203
|
+
else
|
204
|
+
message =
|
205
|
+
"pattern must be either String or Regexp: #{pattern.inspect}"
|
206
|
+
raise VectorArgumentError, message
|
207
|
+
end
|
208
|
+
Vector.create(datum.value)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
@@ -184,6 +184,8 @@ module RedAmber
|
|
184
184
|
#
|
185
185
|
# Propagate next valid value backward to previous nil values.
|
186
186
|
# Or nothing if all next values are nil.
|
187
|
+
# @note Use `fill_nil(value)` to replace nil by a value.
|
188
|
+
# @see #fill_nil
|
187
189
|
# @return [Vector]
|
188
190
|
# a Vector which filled nil backward.
|
189
191
|
# @example
|
@@ -201,6 +203,8 @@ module RedAmber
|
|
201
203
|
#
|
202
204
|
# Propagate last valid value backward to next nil values.
|
203
205
|
# Or nothing if all previous values are nil.
|
206
|
+
# @note Use `fill_nil(value)` to replace nil by a value.
|
207
|
+
# @see #fill_nil
|
204
208
|
# @return [Vector]
|
205
209
|
# a Vector which filled nil forward.
|
206
210
|
# @example
|
@@ -149,6 +149,22 @@ module RedAmber
|
|
149
149
|
replace_with(booleans.data, replacer_array)
|
150
150
|
end
|
151
151
|
|
152
|
+
# Replace nil to value.
|
153
|
+
#
|
154
|
+
# @note Use `fill_nil_backawrd` or `fill_nil_forward` to replace nil
|
155
|
+
# by adjacent values.
|
156
|
+
# @see #fill_nil_backward
|
157
|
+
# @see #fill_nil_forward
|
158
|
+
# @param value [scalar]
|
159
|
+
# the value to replace with.
|
160
|
+
# @return [Vector]
|
161
|
+
# replaced Vector
|
162
|
+
# @since 0.5.0
|
163
|
+
#
|
164
|
+
def fill_nil(value)
|
165
|
+
is_nil.if_else(value, self)
|
166
|
+
end
|
167
|
+
|
152
168
|
# Choose values based on self.
|
153
169
|
#
|
154
170
|
# [Ternary element-wise function] Returns a Vector.
|
@@ -449,6 +465,18 @@ module RedAmber
|
|
449
465
|
end
|
450
466
|
alias_method :concat, :concatenate
|
451
467
|
|
468
|
+
# Cast self to `type`.
|
469
|
+
#
|
470
|
+
# @param type [symbol]
|
471
|
+
# type to cast.
|
472
|
+
# @return [Vector]
|
473
|
+
# casted Vector.
|
474
|
+
# @since 0.5.0
|
475
|
+
#
|
476
|
+
def cast(type)
|
477
|
+
Vector.create(data.cast(type))
|
478
|
+
end
|
479
|
+
|
452
480
|
private
|
453
481
|
|
454
482
|
# Replace elements selected with a boolean mask
|
data/lib/red_amber/version.rb
CHANGED
data/lib/red_amber.rb
CHANGED
@@ -17,9 +17,10 @@ require_relative 'red_amber/group'
|
|
17
17
|
require_relative 'red_amber/subframes'
|
18
18
|
require_relative 'red_amber/vector_aggregation'
|
19
19
|
require_relative 'red_amber/vector_binary_element_wise'
|
20
|
+
require_relative 'red_amber/vector_selectable'
|
21
|
+
require_relative 'red_amber/vector_string_function'
|
20
22
|
require_relative 'red_amber/vector_unary_element_wise'
|
21
23
|
require_relative 'red_amber/vector_updatable'
|
22
|
-
require_relative 'red_amber/vector_selectable'
|
23
24
|
require_relative 'red_amber/vector'
|
24
25
|
require_relative 'red_amber/version'
|
25
26
|
|
data/red_amber.gemspec
CHANGED
@@ -11,13 +11,13 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.summary = 'Simple dataframe library for Ruby'
|
12
12
|
spec.description = 'RedAmber is a simple dataframe library ' \
|
13
13
|
'inspired by Rover-df and powered by Red Arrow.'
|
14
|
-
spec.homepage = 'https://github.com/
|
14
|
+
spec.homepage = 'https://github.com/red-data-tools/red_amber'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
spec.required_ruby_version = '>= 3.0'
|
17
17
|
|
18
18
|
spec.metadata['homepage_uri'] = spec.homepage
|
19
|
-
spec.metadata['source_code_uri'] = 'https://github.com/
|
20
|
-
spec.metadata['changelog_uri'] = 'https://github.com/
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/red-data-tools/red_amber'
|
20
|
+
spec.metadata['changelog_uri'] = 'https://github.com/red-data-tools/red_amber/blob/main/CHANGELOG.md'
|
21
21
|
|
22
22
|
# Specify which files should be added to the gem when it is released.
|
23
23
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
32
32
|
spec.require_paths = ['lib']
|
33
33
|
|
34
|
-
spec.add_dependency 'red-arrow', '~>
|
34
|
+
spec.add_dependency 'red-arrow', '~> 12.0.0'
|
35
35
|
|
36
36
|
# Development dependency has gone to the Gemfile (rubygems/bundler#7237)
|
37
37
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: red_amber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hirokazu SUZUKI (heronshoes)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: red-arrow
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 12.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 12.0.0
|
27
27
|
description: RedAmber is a simple dataframe library inspired by Rover-df and powered
|
28
28
|
by Red Arrow.
|
29
29
|
email:
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- CHANGELOG.md
|
39
39
|
- Gemfile
|
40
40
|
- LICENSE
|
41
|
+
- README.ja.md
|
41
42
|
- README.md
|
42
43
|
- Rakefile
|
43
44
|
- benchmark/basic.yml
|
@@ -87,6 +88,15 @@ files:
|
|
87
88
|
- doc/tdr.md
|
88
89
|
- doc/tdr_ja.md
|
89
90
|
- doc/yard-templates/default/fulldoc/html/css/common.css
|
91
|
+
- docker/.env
|
92
|
+
- docker/Dockerfile
|
93
|
+
- docker/Gemfile
|
94
|
+
- docker/Gemfile.lock
|
95
|
+
- docker/docker-compose.yml
|
96
|
+
- docker/example
|
97
|
+
- docker/notebook/examples_of_red_amber.ipynb
|
98
|
+
- docker/notebook/red-amber.ipynb
|
99
|
+
- docker/readme.md
|
90
100
|
- lib/red-amber.rb
|
91
101
|
- lib/red_amber.rb
|
92
102
|
- lib/red_amber/data_frame.rb
|
@@ -105,18 +115,19 @@ files:
|
|
105
115
|
- lib/red_amber/vector_aggregation.rb
|
106
116
|
- lib/red_amber/vector_binary_element_wise.rb
|
107
117
|
- lib/red_amber/vector_selectable.rb
|
118
|
+
- lib/red_amber/vector_string_function.rb
|
108
119
|
- lib/red_amber/vector_unary_element_wise.rb
|
109
120
|
- lib/red_amber/vector_updatable.rb
|
110
121
|
- lib/red_amber/version.rb
|
111
122
|
- red_amber.gemspec
|
112
123
|
- sig/red_amber.rbs
|
113
|
-
homepage: https://github.com/
|
124
|
+
homepage: https://github.com/red-data-tools/red_amber
|
114
125
|
licenses:
|
115
126
|
- MIT
|
116
127
|
metadata:
|
117
|
-
homepage_uri: https://github.com/
|
118
|
-
source_code_uri: https://github.com/
|
119
|
-
changelog_uri: https://github.com/
|
128
|
+
homepage_uri: https://github.com/red-data-tools/red_amber
|
129
|
+
source_code_uri: https://github.com/red-data-tools/red_amber
|
130
|
+
changelog_uri: https://github.com/red-data-tools/red_amber/blob/main/CHANGELOG.md
|
120
131
|
rubygems_mfa_required: 'true'
|
121
132
|
post_install_message:
|
122
133
|
rdoc_options: []
|
@@ -133,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
144
|
- !ruby/object:Gem::Version
|
134
145
|
version: '0'
|
135
146
|
requirements: []
|
136
|
-
rubygems_version: 3.4.
|
147
|
+
rubygems_version: 3.4.12
|
137
148
|
signing_key:
|
138
149
|
specification_version: 4
|
139
150
|
summary: Simple dataframe library for Ruby
|