Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions src/DataFrame-Tests/DataFrameTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,40 @@ DataFrameTest >> testChangeDataTypes [
self assert: df dataTypes equals: newDataTypes
]

{ #category : #tests }
DataFrameTest >> testCloseTo [

| collection |
collection := DataFrame withRows: #( #( Barcelona 1.609 true ) #( Dubai 2.789 true ) #( London 8.788 false ) #( Paris 2.141 true ) ).
self assert: (collection closeTo: (DataFrame withRows: #( #( Barcelona 1.609 true ) #( Dubai 2.789 true ) #( London 8.788 false ) #( Paris 2.141 true ) ))).


self assert: (collection closeTo: (DataFrame withRows:
#( #( Barcelona 1.609000000000001 true ) #( Dubai 2.78900000001 true ) #( London 8.788000000001 false ) #( Paris 2.14100000000000005 true ) ))).

self deny: (collection closeTo: (DataFrame withRows: #( #( Barcelona 1.608 true ) #( Dubai 2.789 true ) #( London 8.788 false ) #( Paris 2.141 true ) )))
]

{ #category : #tests }
DataFrameTest >> testCloseToPrecision [

| collection |
collection := DataFrame withRows: #( #( Barcelona 1.609 true ) #( Dubai 2.789 true ) #( London 8.788 false ) #( Paris 2.141 true ) ).
self assert: (collection
closeTo: (DataFrame withRows: #( #( Barcelona 1.609 true ) #( Dubai 2.789 true ) #( London 8.788 false ) #( Paris 2.141 true ) ))
precision: 0.0000001).


self assert: (collection
closeTo: (DataFrame withRows:
#( #( Barcelona 1.609000000000001 true ) #( Dubai 2.78900000001 true ) #( London 8.788000000001 false ) #( Paris 2.14100000000000005 true ) ))
precision: 0.0000001).

self deny: (collection
closeTo: (DataFrame withRows: #( #( Barcelona 1.608 true ) #( Dubai 2.789 true ) #( London 8.788 false ) #( Paris 2.141 true ) ))
precision: 0.0000001)
]

{ #category : #tests }
DataFrameTest >> testCollect [
| expectedDf expectedResult actualResult |
Expand Down
37 changes: 28 additions & 9 deletions src/DataFrame/DataFrame.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -535,20 +535,39 @@ DataFrame >> calculateDataTypes [
{ #category : #comparing }
DataFrame >> closeTo: aDataFrame [

aDataFrame species = self species
ifFalse: [ ^ false ].
aDataFrame species = self species ifFalse: [ ^ false ].

aDataFrame dimensions = self dimensions
ifFalse: [ ^ false ].
aDataFrame dimensions = self dimensions ifFalse: [ ^ false ].

(aDataFrame rowNames = self rowNames
and: [ aDataFrame columnNames = self columnNames ])
ifFalse: [ ^ false ].
(aDataFrame rowNames = self rowNames and: [ aDataFrame columnNames = self columnNames ]) ifFalse: [ ^ false ].

1 to: self numberOfRows do: [ :i |
1 to: self numberOfColumns do: [ :j |
| value |
value := self at: i at: j.
(value isNumber
ifTrue: [ value closeTo: (aDataFrame at: i at: j) ]
ifFalse: [ value = (aDataFrame at: i at: j) ]) ifFalse: [ ^ false ] ] ].

^ true
]

{ #category : #comparing }
DataFrame >> closeTo: aDataFrame precision: epsilon [

aDataFrame species = self species ifFalse: [ ^ false ].

aDataFrame dimensions = self dimensions ifFalse: [ ^ false ].

(aDataFrame rowNames = self rowNames and: [ aDataFrame columnNames = self columnNames ]) ifFalse: [ ^ false ].

1 to: self numberOfRows do: [ :i |
1 to: self numberOfColumns do: [ :j |
((self at: i at: j) closeTo: (aDataFrame at: i at: j))
ifFalse: [ ^ false ] ] ].
| value |
value := self at: i at: j.
(value isNumber
ifTrue: [ value closeTo: (aDataFrame at: i at: j) precision: epsilon ]
ifFalse: [ value = (aDataFrame at: i at: j) ]) ifFalse: [ ^ false ] ] ].

^ true
]
Expand Down