daru_lite 0.2.4 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a04accc0b21012227f90f9586cf82bf432d0d8b973ed95238307fd6d11d17eba
4
- data.tar.gz: e0fdc901b2d9b8bfb0a5af9f364921fcf4022d083d303621073161572cd189b3
3
+ metadata.gz: 2ecfb59a965f8f05a20a331298549d00db4116e8a8f897dc5fdeb4c4b18dc98e
4
+ data.tar.gz: fefeb73d29528353d75c291817932146ff283c3160182f755e275e1561882ee1
5
5
  SHA512:
6
- metadata.gz: a49e8d0219f4005d84ce38729707aa4742dcc8ee31d56ffff6f29899ad01b910f7f38d1574419d882947c791f22eeaeb0afcdf3e804283d21725d36ab7a5f016
7
- data.tar.gz: 363502b7823a4cc4928e567e560d1992a873c02adaf1014de0b90b92e8772b8fce350f5cf23a86643a94c857a33343890cefbd09612dba2affbc909f97b8f253
6
+ metadata.gz: 668c346ce88a77d215a322cd09adf8e9abe07db7d14233800e154119015d059fab6f64c5b6daccdf15844d61fbdde27d6ea99594aea4f683edba328222bedd58
7
+ data.tar.gz: 1c6d4e68271787f6abc543806e6409cdbcd139dbcab69d2dc55f2f4c4b7a18a389e0b1ad813ec958670c48322da35903c306f8156ab9f08c9b22e03cae9210f1
@@ -85,15 +85,16 @@ module DaruLite
85
85
  raise 'Three vectors should be equal size' if
86
86
  rows.size != columns.size || rows.size != values.size
87
87
 
88
+ row_index = rows.uniq.to_a
88
89
  data = Hash.new do |h, col|
89
- h[col] = rows.factors.map { |r| [r, nil] }.to_h
90
+ h[col] = row_index.map { |r| [r, nil] }.to_h
90
91
  end
91
92
  columns.zip(rows, values).each { |c, r, v| data[c][r] = v }
92
93
 
93
94
  # FIXME: in fact, WITHOUT this line you'll obtain more "right"
94
95
  # data: with vectors having "rows" as an index...
95
96
  data = data.transform_values(&:values)
96
- data[:_id] = rows.factors
97
+ data[:_id] = row_index
97
98
 
98
99
  DataFrame.new(data)
99
100
  end
@@ -1,3 +1,3 @@
1
1
  module DaruLite
2
- VERSION = '0.2.4'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
@@ -1076,6 +1076,17 @@ describe DaruLite::DataFrame do
1076
1076
 
1077
1077
  expect(df2).to eq(df)
1078
1078
  end
1079
+
1080
+ it 'handles nil values in the rows vector' do
1081
+ v1 = DaruLite::Vector.new [nil, 'a', nil, 'a']
1082
+ v2 = DaruLite::Vector.new %w[x x y y]
1083
+ v3 = DaruLite::Vector.new [1, 2, 3, 4]
1084
+ df = DaruLite::DataFrame.crosstab_by_assignation(v1, v2, v3)
1085
+
1086
+ expect(df[:_id].to_a).to eq([nil, 'a'])
1087
+ expect(df['x'].to_a).to eq([1, 2])
1088
+ expect(df['y'].to_a).to eq([3, 4])
1089
+ end
1079
1090
  end
1080
1091
 
1081
1092
  context '#inspect' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daru_lite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Naude-Filonnière
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2026-04-10 00:00:00.000000000 Z
15
+ date: 2026-04-14 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activerecord