@@ -32,7 +32,7 @@ Base.@propagate_inbounds function _op_for_sum!(x, y, f, lo, hi)
32
32
end
33
33
34
34
function row_sum (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); threads = true )
35
- colsidx = index (ds)[ cols]
35
+ colsidx = multiple_getindex ( index (ds), cols)
36
36
CT = mapreduce (eltype, promote_type, view (_columns (ds),colsidx))
37
37
T = Core. Compiler. return_type (f, (CT,))
38
38
init0 = missings (T, nrow (ds))
@@ -62,7 +62,7 @@ Base.@propagate_inbounds function _op_for_prod!(x, y, f, lo, hi)
62
62
end
63
63
64
64
function row_prod (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); threads = true )
65
- colsidx = index (ds)[ cols]
65
+ colsidx = multiple_getindex ( index (ds), cols)
66
66
CT = mapreduce (eltype, promote_type, view (_columns (ds),colsidx))
67
67
T = Core. Compiler. return_type (f, (CT,))
68
68
init0 = missings (T, nrow (ds))
91
91
92
92
93
93
function row_count (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); threads = true )
94
- colsidx = index (ds)[ cols]
94
+ colsidx = multiple_getindex ( index (ds), cols)
95
95
init0 = zeros (Int32, size (ds,1 ))
96
96
97
97
if threads
@@ -118,7 +118,7 @@ Base.@propagate_inbounds function op_for_any!(x, y, f, lo, hi)
118
118
end
119
119
120
120
function row_any (ds:: AbstractDataset , f:: Union{AbstractVector{<:Function}, Function} , cols = :; threads = true )
121
- colsidx = index (ds)[ cols]
121
+ colsidx = multiple_getindex ( index (ds), cols)
122
122
init0 = zeros (Bool, size (ds,1 ))
123
123
124
124
multi_f = false
@@ -160,7 +160,7 @@ Base.@propagate_inbounds function op_for_all!(x, y, f, lo, hi)
160
160
end
161
161
162
162
function row_all (ds:: AbstractDataset , f:: Union{AbstractVector{<:Function}, Function} , cols = :; threads = true )
163
- colsidx = index (ds)[ cols]
163
+ colsidx = multiple_getindex ( index (ds), cols)
164
164
init0 = ones (Bool, size (ds,1 ))
165
165
166
166
multi_f = false
204
204
205
205
206
206
function row_isequal (ds:: AbstractDataset , cols = :; by:: Union{AbstractVector, DatasetColumn, SubDatasetColumn, ColumnIndex, Nothing} = nothing , threads = true )
207
- colsidx = index (ds)[ cols]
207
+ colsidx = multiple_getindex ( index (ds), cols)
208
208
if ! (by isa ColumnIndex) && by != = nothing
209
209
@assert length (by) == nrow (ds) " to compare values of selected columns in each row, the length of the passed vector and the number of rows must match"
210
210
end
@@ -250,7 +250,7 @@ function row_isless(ds::AbstractDataset, cols, colselector::Union{AbstractVector
250
250
if ! (colselector isa ColumnIndex)
251
251
@assert length (colselector) == nrow (ds) " to compare values of selected columns in each row, the length of the passed vector and the number of rows must match"
252
252
end
253
- colsidx = index (ds)[ cols]
253
+ colsidx = multiple_getindex ( index (ds), cols)
254
254
if colselector isa SubDatasetColumn || colselector isa DatasetColumn
255
255
colselector = __! (colselector)
256
256
elseif colselector isa ColumnIndex
@@ -314,7 +314,7 @@ function row_findfirst(ds::AbstractDataset, f, cols = names(ds, Union{Missing, N
314
314
elseif item isa ColumnIndex
315
315
item = _columns (ds)[index (ds)[item]]
316
316
end
317
- colsidx = index (ds)[ cols]
317
+ colsidx = multiple_getindex ( index (ds), cols)
318
318
319
319
colnames_pa = allowmissing (PooledArray (_names (ds)[colsidx]))
320
320
push! (colnames_pa, missing )
@@ -353,7 +353,7 @@ function row_findlast(ds::AbstractDataset, f, cols = names(ds, Union{Missing, Nu
353
353
elseif item isa ColumnIndex
354
354
item = _columns (ds)[index (ds)[item]]
355
355
end
356
- colsidx = index (ds)[ cols]
356
+ colsidx = multiple_getindex ( index (ds), cols)
357
357
colnames_pa = allowmissing (PooledArray (_names (ds)[colsidx]))
358
358
push! (colnames_pa, missing )
359
359
missref = get (colnames_pa. invpool, missing , 0 )
@@ -429,7 +429,7 @@ function row_select(ds::AbstractDataset, cols, colselector::Union{AbstractVector
429
429
if ! (colselector isa ColumnIndex)
430
430
@assert length (colselector) == nrow (ds) " to pick values of selected columns in each row, the length of the column names and the number of rows must match, i.e. the length of the vector passed as `by` must be $(nrow (ds)) ."
431
431
end
432
- colsidx = index (ds)[ cols]
432
+ colsidx = multiple_getindex ( index (ds), cols)
433
433
CT = mapreduce (eltype, promote_type, view (_columns (ds),colsidx))
434
434
if colselector isa SubDatasetColumn || colselector isa DatasetColumn
435
435
colselector = __! (colselector)
@@ -481,7 +481,7 @@ function row_fill!(ds::AbstractDataset, cols, val::Union{AbstractVector, Dataset
481
481
if ! (val isa ColumnIndex)
482
482
@assert length (val) == nrow (ds) " to fill values in each row, the length of passed values and the number of rows must match."
483
483
end
484
- colsidx = index (ds)[ cols]
484
+ colsidx = multiple_getindex ( index (ds), cols)
485
485
if val isa SubDatasetColumn || val isa DatasetColumn
486
486
val = __! (val)
487
487
end
527
527
528
528
529
529
function row_coalesce (ds:: AbstractDataset , cols = names (ds, Union{Missing, Number}); threads = true )
530
- colsidx = index (ds)[ cols]
530
+ colsidx = multiple_getindex ( index (ds), cols)
531
531
CT = mapreduce (eltype, promote_type, view (_columns (ds),colsidx))
532
532
533
533
init0 = fill! (Vector {Union{Missing, CT}} (undef, size (ds,1 )), missing )
@@ -566,7 +566,7 @@ Base.@propagate_inbounds function _op_for_max!(x, y, f, lo, hi)
566
566
end
567
567
568
568
function row_minimum (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); threads = true )
569
- colsidx = index (ds)[ cols]
569
+ colsidx = multiple_getindex ( index (ds), cols)
570
570
CT = mapreduce (eltype, promote_type, view (_columns (ds),colsidx))
571
571
T = Core. Compiler. return_type (f, (CT,))
572
572
init0 = missings (T, nrow (ds))
586
586
row_minimum (ds:: AbstractDataset , cols = names (ds, Union{Missing, Number}); threads = true ) = row_minimum (ds, identity, cols; threads = threads)
587
587
588
588
function row_maximum (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); threads = true )
589
- colsidx = index (ds)[ cols]
589
+ colsidx = multiple_getindex ( index (ds), cols)
590
590
CT = mapreduce (eltype, promote_type, view (_columns (ds),colsidx))
591
591
T = Core. Compiler. return_type (f, (CT,))
592
592
init0 = missings (T, nrow (ds))
@@ -616,7 +616,7 @@ Base.@propagate_inbounds function _op_for_argminmax!(x, y, f, vals, idx, missref
616
616
end
617
617
618
618
function row_argmin (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); threads = true )
619
- colsidx = index (ds)[ cols]
619
+ colsidx = multiple_getindex ( index (ds), cols)
620
620
minvals = row_minimum (ds, f, cols)
621
621
colnames_pa = allowmissing (PooledArray (_names (ds)[colsidx]))
622
622
push! (colnames_pa, missing )
642
642
row_argmin (ds:: AbstractDataset , cols = names (ds, Union{Missing, Number}); threads = true ) = row_argmin (ds, identity, cols, threads = threads)
643
643
644
644
function row_argmax (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); threads = true )
645
- colsidx = index (ds)[ cols]
645
+ colsidx = multiple_getindex ( index (ds), cols)
646
646
maxvals = row_maximum (ds, f, cols)
647
647
colnames_pa = allowmissing (PooledArray (_names (ds)[colsidx]))
648
648
push! (colnames_pa, missing )
689
689
# TODO needs type stability
690
690
# TODO need abs2 for calculations
691
691
function row_var (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); dof = true , threads = true )
692
- colsidx = index (ds)[ cols]
692
+ colsidx = multiple_getindex ( index (ds), cols)
693
693
CT = mapreduce (eltype, promote_type, view (_columns (ds),colsidx))
694
694
T = Core. Compiler. return_type (f, (CT,))
695
695
_sq_ (x) = x^ 2
@@ -1026,7 +1026,7 @@ Base.@propagate_inbounds function _op_for_issorted_rev!(x, y, res, lt, lo, hi)
1026
1026
end
1027
1027
1028
1028
function row_issorted (ds:: AbstractDataset , cols; rev = false , lt = isless, threads = true )
1029
- colsidx = index (ds)[ cols]
1029
+ colsidx = multiple_getindex ( index (ds), cols)
1030
1030
init0 = ones (Bool, nrow (ds))
1031
1031
1032
1032
if threads
@@ -1068,7 +1068,7 @@ function _fill_dict_and_add!(init0, dict, prehashed, n, p)
1068
1068
end
1069
1069
1070
1070
function row_nunique (ds:: AbstractDataset , f:: Function , cols = names (ds, Union{Missing, Number}); count_missing = true )
1071
- colsidx = index (ds)[ cols]
1071
+ colsidx = multiple_getindex ( index (ds), cols)
1072
1072
prehashed = Matrix {_Prehashed} (undef, size (ds,1 ), length (colsidx))
1073
1073
allcols = view (_columns (ds),colsidx)
1074
1074
@@ -1095,7 +1095,7 @@ Base.@propagate_inbounds function _op_for_hash!(x, y, f, lo, hi)
1095
1095
end
1096
1096
1097
1097
function row_hash (ds:: AbstractDataset , f:: Function , cols = :; threads = true )
1098
- colsidx = index (ds)[ cols]
1098
+ colsidx = multiple_getindex ( index (ds), cols)
1099
1099
init0 = zeros (UInt64, nrow (ds))
1100
1100
1101
1101
if threads
@@ -1124,7 +1124,7 @@ function _fill_matrix!(inmat, all_data, rows, cols)
1124
1124
end
1125
1125
1126
1126
function row_generic (ds:: AbstractDataset , f:: Function , cols:: MultiColumnIndex )
1127
- colsidx = index (ds)[ cols]
1127
+ colsidx = multiple_getindex ( index (ds), cols)
1128
1128
if length (colsidx) == 2
1129
1129
try
1130
1130
allowmissing (f .(_columns (ds)[colsidx[1 ]], _columns (ds)[colsidx[2 ]]))
0 commit comments