Class: Charty::VectorAdapters::DaruVectorAdapter
Instance Attribute Summary
Attributes inherited from BaseAdapter
#data
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from BaseAdapter
#==, adapter_name, #inverse_log_scale, #log_scale, #mean
Constructor Details
Returns a new instance of DaruVectorAdapter.
10
11
12
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 10
def initialize(data)
@data = check_data(data)
end
|
Class Method Details
.supported?(data) ⇒ Boolean
6
7
8
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 6
def self.supported?(data)
defined?(Daru::Vector) && data.is_a?(Daru::Vector)
end
|
Instance Method Details
#[](key) ⇒ Object
42
43
44
45
46
47
48
49
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 42
def [](key)
case key
when Charty::Vector
where(key)
else
data[key]
end
end
|
#boolean? ⇒ Boolean
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 80
def boolean?
case
when numeric?, categorical?
false
else
case first_nonnil
when true, false
true
else
false
end
end
end
|
#categories ⇒ Object
97
98
99
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 97
def categories
data.categories.compact if categorical?
end
|
#compare_data_equality(other) ⇒ Object
33
34
35
36
37
38
39
40
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 33
def compare_data_equality(other)
case other
when DaruVectorAdapter
data == other.data
else
to_a == other.to_a
end
end
|
#drop_na ⇒ Object
128
129
130
131
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 128
def drop_na
values = data.reject {|x| Util.missing?(x) }
Charty::Vector.new(Daru::Vector.new(values))
end
|
#eq(val) ⇒ Object
133
134
135
136
137
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 133
def eq(val)
Charty::Vector.new(data.eq(val).to_a,
index: data.index.to_a,
name: name)
end
|
#first_nonnil ⇒ Object
76
77
78
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 76
def first_nonnil
data.drop_while(&:nil?).first
end
|
#group_by(grouper) ⇒ Object
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 105
def group_by(grouper)
case grouper
when Daru::Vector
if grouper.category?
grouper = Daru::Vector.new(grouper.to_a)
end
groups = grouper.group_by.groups
groups.map { |g, indices|
[g.first, Charty::Vector.new(data[*indices])]
}.to_h
when Charty::Vector
case grouper.data
when Daru::Vector
return group_by(grouper.data)
else
return group_by(Daru::Vector.new(grouper.to_a))
end
else
return group_by(Charty::Vector.new(grouper))
end
end
|
#index ⇒ Object
16
17
18
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 16
def index
DaruIndex.new(data.index)
end
|
#index=(new_index) ⇒ Object
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 20
def index=(new_index)
case new_index
when DaruIndex
data.index = new_index.values
when Index
data.index = new_index.to_a
else
data.index = new_index
end
end
|
#notnull ⇒ Object
139
140
141
142
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 139
def notnull
notnull_data = data.map {|x| ! Util.missing?(x) }
Charty::Vector.new(notnull_data, index: data.index.to_a, name: name)
end
|
#percentile(q) ⇒ Object
154
155
156
157
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 154
def percentile(q)
a = data.reject_values(*Daru::MISSING_VALUES).to_a
Statistics.percentile(a, q)
end
|
#stdev(population: false) ⇒ Object
146
147
148
149
150
151
152
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 146
def stdev(population: false)
if population
data.standard_deviation_sample
else
data.standard_deviation_population
end
end
|
#unique_values ⇒ Object
101
102
103
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 101
def unique_values
data.uniq.to_a
end
|
#values_at(*indices) ⇒ Object
53
54
55
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 53
def values_at(*indices)
indices.map {|i| data.at(i) }
end
|
#where(mask) ⇒ Object
57
58
59
60
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 57
def where(mask)
masked_data, masked_index = where_in_array(mask)
Charty::Vector.new(Daru::Vector.new(masked_data, index: masked_index), name: name)
end
|
#where_in_array(mask) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 62
def where_in_array(mask)
mask = check_mask_vector(mask)
masked_data = []
masked_index = []
mask.each_with_index do |f, i|
case f
when true, 1
masked_data << data[i]
masked_index << data.index.key(i)
end
end
return masked_data, masked_index
end
|