@@ -2,14 +2,104 @@ module TestGrouping
2
2
using Base. Test
3
3
using DataTables
4
4
5
+ srand (1 )
5
6
dt = DataTable (a = repeat ([1 , 2 , 3 , 4 ], outer= [2 ]),
6
7
b = repeat ([2 , 1 ], outer= [4 ]),
7
8
c = randn (8 ))
8
9
# dt[6, :a] = Nullable()
9
10
# dt[7, :b] = Nullable()
10
11
11
- cols = [:a , :b ]
12
+ nullfree = DataTable (Any[collect (1 : 10 )], [:x1 ])
13
+ @testset " colwise" begin
14
+ @testset " ::Function, ::AbstractDataTable" begin
15
+ cw = colwise (sum, dt)
16
+ answer = NullableArray ([20 , 12 , - 0.4283098098931877 ])
17
+ @test isa (cw, NullableArray{Any, 1 })
18
+ @test size (cw) == (ncol (dt),)
19
+ @test isequal (cw, answer)
20
+
21
+ cw = colwise (sum, nullfree)
22
+ answer = [55 ]
23
+ @test isa (cw, Array{Int, 1 })
24
+ @test size (cw) == (ncol (nullfree),)
25
+ @test cw == answer
26
+ end
27
+
28
+ @testset " ::Function, ::GroupedDataTable" begin
29
+ gd = groupby (DataTable (A = [:A , :A , :B , :B ], B = 1 : 4 ), :A )
30
+ @test colwise (length, gd) == [[2 ,2 ], [2 ,2 ]]
31
+ end
32
+
33
+ @testset " ::Vector, ::AbstractDataTable" begin
34
+ cw = colwise ([sum], dt)
35
+ answer = NullableArray ([20 12 - 0.4283098098931877 ])
36
+ @test isa (cw, NullableArray{Any, 2 })
37
+ @test size (cw) == (length ([sum]),ncol (dt))
38
+ @test isequal (cw, answer)
39
+
40
+ cw = colwise ([sum, minimum], nullfree)
41
+ answer = reshape ([55 , 1 ], (2 ,1 ))
42
+ @test isa (cw, Array{Int, 2 })
43
+ @test size (cw) == (length ([sum, minimum]), ncol (nullfree))
44
+ @test cw == answer
45
+
46
+ cw = colwise ([NullableArray], nullfree)
47
+ answer = reshape ([NullableArray (1 : 10 )], (1 ,1 ))
48
+ @test isa (cw, Array{NullableArray{Int,1 },2 })
49
+ @test size (cw) == (length ([NullableArray]), ncol (nullfree))
50
+ @test isequal (cw, answer)
51
+
52
+ @test_throws MethodError colwise ([" Bob" , :Susie ], DataTable (A = 1 : 10 , B = 11 : 20 ))
53
+ end
54
+
55
+ @testset " ::Vector, ::GroupedDataTable" begin
56
+ gd = groupby (DataTable (A = [:A , :A , :B , :B ], B = 1 : 4 ), :A )
57
+ @test colwise ([length], gd) == [[2 2 ], [2 2 ]]
58
+ end
59
+
60
+ @testset " ::Tuple, ::AbstractDataTable" begin
61
+ cw = colwise ((sum, length), dt)
62
+ answer = Any[Nullable (20 ) Nullable (12 ) Nullable (- 0.4283098098931877 ); 8 8 8 ]
63
+ @test isa (cw, Array{Any, 2 })
64
+ @test size (cw) == (length ((sum, length)), ncol (dt))
65
+ @test isequal (cw, answer)
66
+
67
+ cw = colwise ((sum, length), nullfree)
68
+ answer = reshape ([55 , 10 ], (2 ,1 ))
69
+ @test isa (cw, Array{Int, 2 })
70
+ @test size (cw) == (length ((sum, length)), ncol (nullfree))
71
+ @test cw == answer
72
+
73
+ cw = colwise ((CategoricalArray, NullableArray), nullfree)
74
+ answer = reshape ([CategoricalArray (1 : 10 ), NullableArray (1 : 10 )],
75
+ (length ((CategoricalArray, NullableArray)), ncol (nullfree)))
76
+ @test typeof (cw) == Array{AbstractVector,2 }
77
+ @test size (cw) == (length ((CategoricalArray, NullableArray)), ncol (nullfree))
78
+ @test isequal (cw, answer)
79
+
80
+ @test_throws MethodError colwise ((" Bob" , :Susie ), DataTable (A = 1 : 10 , B = 11 : 20 ))
81
+ end
82
+
83
+ @testset " ::Tuple, ::GroupedDataTable" begin
84
+ gd = groupby (DataTable (A = [:A , :A , :B , :B ], B = 1 : 4 ), :A )
85
+ @test colwise ((length), gd) == [[2 ,2 ],[2 ,2 ]]
86
+ end
87
+
88
+ @testset " ::Function" begin
89
+ cw = map (colwise (sum), (nullfree, dt))
90
+ answer = ([55 ], NullableArray (Any[20 , 12 , - 0.4283098098931877 ]))
91
+ @test isequal (cw, answer)
92
+
93
+ cw = map (colwise ((sum, length)), (nullfree, dt))
94
+ answer = (reshape ([55 , 10 ], (2 ,1 )), Any[Nullable (20 ) Nullable (12 ) Nullable (- 0.4283098098931877 ); 8 8 8 ])
95
+ @test isequal (cw, answer)
96
+
97
+ cw = map (colwise ([sum, length]), (nullfree, dt))
98
+ @test isequal (cw, answer)
99
+ end
100
+ end
12
101
102
+ cols = [:a , :b ]
13
103
f (dt) = DataTable (cmax = maximum (dt[:c ]))
14
104
15
105
sdt = unique (dt[cols])
@@ -24,9 +114,6 @@ module TestGrouping
24
114
25
115
byf = by (dt, :a , dt -> DataTable (bsum = sum (dt[:b ])))
26
116
27
- @test all (T -> T <: AbstractVector , map (typeof, colwise ([sum], dt)))
28
- @test all (T -> T <: AbstractVector , map (typeof, colwise (sum, dt)))
29
-
30
117
# groupby() without groups sorting
31
118
gd = groupby (dt, cols)
32
119
ga = map (f, gd)
0 commit comments