Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
grpstats(): how to pass multiple variables to function handle?

Subject: grpstats(): how to pass multiple variables to function handle?

From: Hoi Wong

Date: 29 Nov, 2011 02:05:10

Message: 1 of 10

I'm looking to reduce two variables (X, Y) of a grouped dataset object into one variable by a function like corr(X,Y), but I cannot find a good way to enter that as a function handle in grpstats() as they only accept one input.

Is there a neat way to achieve this without concatenating two variables into one matrix? My dataset is pretty large and dense, so I don't want to unnecessarily double the amount of required memory.

Thanks.

Subject: grpstats(): how to pass multiple variables to function handle?

From: ade77

Date: 29 Nov, 2011 15:18:08

Message: 2 of 10

 I'm looking to reduce two variables (X, Y) of a grouped dataset object into one variable by a function like corr(X,Y), but I cannot find a good way to enter that as a function handle in grpstats() as they only accept one input.


*********************************************************************
to use grpstats(), u will need a measurement, and say your groups are X, Y.
a = grpstats(meas, group, @(c) corr(c))
where your group will be X, and Y in one length, it could be cell array or logical or nummeric etc. There is an example in the statistics toolbox on grouped data.

btw, what kind of variables are ur X and Y.

*******************************************************************



> Is there a neat way to achieve this without concatenating two variables into one matrix? My dataset is pretty large and dense, so I don't want to unnecessarily double the amount of required memory.
*******************************************************************
a = grpstats(meas, [X;Y], @(c) corr(c)) ------ the variables X, Y , are already in memory, u are not using additional memory
*******************************************************************

Subject: grpstats(): how to pass multiple variables to function handle?

From: ade77

Date: 29 Nov, 2011 15:22:08

Message: 3 of 10

a = grpstats(meas, group, @corr) ------ does it directly

Subject: grpstats(): how to pass multiple variables to function handle?

From: Peter Perkins

Date: 29 Nov, 2011 19:43:33

Message: 4 of 10

On 11/28/2011 9:05 PM, Hoi Wong wrote:
> I'm looking to reduce two variables (X, Y) of a grouped dataset object
> into one variable by a function like corr(X,Y), but I cannot find a good
> way to enter that as a function handle in grpstats() as they only accept
> one input.
> Is there a neat way to achieve this without concatenating two variables
> into one matrix? My dataset is pretty large and dense, so I don't want
> to unnecessarily double the amount of required memory.

Hoi, grpstats isn't designed to compute functions that work across
multiple variables. It's certainly possible to write a loop and compute
what you want by hand.

But it is possible to trick grpstats, if you are willing to add a
"dummy" index variable, and use a function such as

    corFun = @(ind) corr(data.x(ind),data.y(ind))

in a call to grpstats like

    gerpstats(data,groups,corFun,'DataVars','dummyIndex')

I can't say if this will be practical with a very large array or not.
Hope it helps.

Subject: grpstats(): how to pass multiple variables to function handle?

From: Hoi Wong

Date: 31 Aug, 2012 00:27:07

Message: 5 of 10

Sorry for the delay, I was swamped by other projects and didn't get to work on that for a while.

Thanks for your help. It's a smart idea. I tried it and it works. I had to remember to make an all 'true' logical dummy variable instead of ones because it might be misinterpreted as linear indices.

Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message <jb3cl5$i1$1@newscl01ah.mathworks.com>...
> On 11/28/2011 9:05 PM, Hoi Wong wrote:
> > I'm looking to reduce two variables (X, Y) of a grouped dataset object
> > into one variable by a function like corr(X,Y), but I cannot find a good
> > way to enter that as a function handle in grpstats() as they only accept
> > one input.
> > Is there a neat way to achieve this without concatenating two variables
> > into one matrix? My dataset is pretty large and dense, so I don't want
> > to unnecessarily double the amount of required memory.
>
> Hoi, grpstats isn't designed to compute functions that work across
> multiple variables. It's certainly possible to write a loop and compute
> what you want by hand.
>
> But it is possible to trick grpstats, if you are willing to add a
> "dummy" index variable, and use a function such as
>
> corFun = @(ind) corr(data.x(ind),data.y(ind))
>
> in a call to grpstats like
>
> gerpstats(data,groups,corFun,'DataVars','dummyIndex')
>
> I can't say if this will be practical with a very large array or not.
> Hope it helps.

Subject: grpstats(): how to pass multiple variables to function handle?

From: Hoi Wong

Date: 28 Feb, 2014 02:26:17

Message: 6 of 10

Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message <jb3cl5$i1$1@newscl01ah.mathworks.com>...
> On 11/28/2011 9:05 PM, Hoi Wong wrote:
> > I'm looking to reduce two variables (X, Y) of a grouped dataset object
> > into one variable by a function like corr(X,Y), but I cannot find a good
> > way to enter that as a function handle in grpstats() as they only accept
> > one input.
> > Is there a neat way to achieve this without concatenating two variables
> > into one matrix? My dataset is pretty large and dense, so I don't want
> > to unnecessarily double the amount of required memory.
>
> Hoi, grpstats isn't designed to compute functions that work across
> multiple variables. It's certainly possible to write a loop and compute
> what you want by hand.
>
> But it is possible to trick grpstats, if you are willing to add a
> "dummy" index variable, and use a function such as
>
> corFun = @(ind) corr(data.x(ind),data.y(ind))
>
> in a call to grpstats like
>
> gerpstats(data,groups,corFun,'DataVars','dummyIndex')
>
> I can't say if this will be practical with a very large array or not.
> Hope it helps.

Hi Peter,

After a few years of using this without knowing why. Can you explain it to me why this trick works? If I just do this:
grpstats(data, groups, @(ind) {ind}, 'DataVars', 'dummyIndx'),
I get a bunch of ones (or trues), suggesting that the ind is not a indicator vector (that has zeros and ones that I can use to extract the rows, but the usage above looks like I'm using it as an indicator function.

Can you explain the logic behind it?

Thanks.
- Hoi

Subject: grpstats(): how to pass multiple variables to function handle?

From: Peter Perkins

Date: 28 Feb, 2014 23:28:43

Message: 7 of 10

I can't tell exactly what you're doing, but I wouldn't expect to get a
bunch of ones. dummyIndex should be a numeric column vector in the
dataset, with the values (1:nrows)' in it. The result you get back from
grpstats using @(ind){ind} should be a partition of 1:nrows, one vector
of indices per cell, one cell per group in your data. That's just a
debugging trick of course. If you use a function such as
@(ind)corr(data.x(ind),data.y(ind)), you can see that that will take the
correlation of x and y with the group defined by a particular set of row
indices.

By the way, you might look into tables and the rowfun method, which can
work across multiple variables.


On 2/27/2014 9:26 PM, Hoi Wong wrote:
> Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message
> <jb3cl5$i1$1@newscl01ah.mathworks.com>...
>> On 11/28/2011 9:05 PM, Hoi Wong wrote:
>> > I'm looking to reduce two variables (X, Y) of a grouped dataset object
>> > into one variable by a function like corr(X,Y), but I cannot find a
>> good
>> > way to enter that as a function handle in grpstats() as they only
>> accept
>> > one input.
>> > Is there a neat way to achieve this without concatenating two variables
>> > into one matrix? My dataset is pretty large and dense, so I don't want
>> > to unnecessarily double the amount of required memory.
>>
>> Hoi, grpstats isn't designed to compute functions that work across
>> multiple variables. It's certainly possible to write a loop and
>> compute what you want by hand.
>>
>> But it is possible to trick grpstats, if you are willing to add a
>> "dummy" index variable, and use a function such as
>>
>> corFun = @(ind) corr(data.x(ind),data.y(ind))
>>
>> in a call to grpstats like
>>
>> gerpstats(data,groups,corFun,'DataVars','dummyIndex')
>>
>> I can't say if this will be practical with a very large array or not.
>> Hope it helps.
>
> Hi Peter,
>
> After a few years of using this without knowing why. Can you explain it
> to me why this trick works? If I just do this:
> grpstats(data, groups, @(ind) {ind}, 'DataVars', 'dummyIndx'),
> I get a bunch of ones (or trues), suggesting that the ind is not a
> indicator vector (that has zeros and ones that I can use to extract the
> rows, but the usage above looks like I'm using it as an indicator function.
>
> Can you explain the logic behind it?
>
> Thanks.
> - Hoi

Subject: grpstats(): how to pass multiple variables to function handle?

From: Hoi Wong

Date: 1 Mar, 2014 01:31:09

Message: 8 of 10

Hi Peter,

I often try to use grpstats() to break data in groups into one cell per group. I thought the trick you suggested uses logical indexing. Here's an example of what I'm seeing:

>> DS = dataset({[1 1 3 2 2 2 2 1]', 'grp'}, {rand(8,2), 'data'}, {true(8,1), 'dummy'})
DS =
    grp data dummy
    1 0.95185 0.53404 true
    1 0.24895 0.78607 true
    3 0.058954 0.55833 true
    2 0.44563 0.5823 true
    2 0.32427 0.88879 true
    2 0.68967 0.16224 true
    2 0.14302 0.76912 true
    1 0.19918 0.42956 true

>> GS=grpstats(DS, 'grp', @(i) {DS.data(i,:)}, 'DataVars', 'dummy')
GS =
         grp GroupCount Fun1_dummy
    1 1 3 [3x2 double]
    2 2 4 [4x2 double]
    3 3 1 [1x2 double]

>> GS.Fun1_dummy{1}
ans =
      0.95185 0.53404
      0.24895 0.78607
     0.058954 0.55833

>> GS.Fun1_dummy{2}
ans =
      0.95185 0.53404
      0.24895 0.78607
     0.058954 0.55833
      0.44563 0.5823

>> GS.Fun1_dummy{3}
ans =
      0.95185 0.53404

Everything looks good so far. Then I tried to capture the indices I use to reference into DS.data:

>> GI=grpstats(DS, 'grp', @(i) {i}, 'DataVars', 'dummy')
GI =
         grp GroupCount Fun1_dummy
    1 1 3 [3x1 logical]
    2 2 4 [4x1 logical]
    3 3 1 [ 1]

K>> GI.Fun1_dummy{1}
ans =
     1
     1
     1
K>> GI.Fun1_dummy{2}
ans =
     1
     1
     1
     1
K>> GI.Fun1_dummy{3}
ans =
     1

If each one of the dummy cells I captured with @(i) {i} is a bunch of ones (trues), wouldn't that mean the logical indices I used for referencing DS.data could have been these short vectors of ones that extracts the first 3, 4, and 1 elements for group 1, 2, and 3?

I must be missing something conceptually...

Thanks.

Cheers,
Hoi


Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message <ler63c$iss$1@newscl01ah.mathworks.com>...
> I can't tell exactly what you're doing, but I wouldn't expect to get a
> bunch of ones. dummyIndex should be a numeric column vector in the
> dataset, with the values (1:nrows)' in it. The result you get back from
> grpstats using @(ind){ind} should be a partition of 1:nrows, one vector
> of indices per cell, one cell per group in your data. That's just a
> debugging trick of course. If you use a function such as
> @(ind)corr(data.x(ind),data.y(ind)), you can see that that will take the
> correlation of x and y with the group defined by a particular set of row
> indices.
>
> By the way, you might look into tables and the rowfun method, which can
> work across multiple variables.
>
>
> On 2/27/2014 9:26 PM, Hoi Wong wrote:
> > Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message
> > <jb3cl5$i1$1@newscl01ah.mathworks.com>...
> >> On 11/28/2011 9:05 PM, Hoi Wong wrote:
> >> > I'm looking to reduce two variables (X, Y) of a grouped dataset object
> >> > into one variable by a function like corr(X,Y), but I cannot find a
> >> good
> >> > way to enter that as a function handle in grpstats() as they only
> >> accept
> >> > one input.
> >> > Is there a neat way to achieve this without concatenating two variables
> >> > into one matrix? My dataset is pretty large and dense, so I don't want
> >> > to unnecessarily double the amount of required memory.
> >>
> >> Hoi, grpstats isn't designed to compute functions that work across
> >> multiple variables. It's certainly possible to write a loop and
> >> compute what you want by hand.
> >>
> >> But it is possible to trick grpstats, if you are willing to add a
> >> "dummy" index variable, and use a function such as
> >>
> >> corFun = @(ind) corr(data.x(ind),data.y(ind))
> >>
> >> in a call to grpstats like
> >>
> >> gerpstats(data,groups,corFun,'DataVars','dummyIndex')
> >>
> >> I can't say if this will be practical with a very large array or not.
> >> Hope it helps.
> >
> > Hi Peter,
> >
> > After a few years of using this without knowing why. Can you explain it
> > to me why this trick works? If I just do this:
> > grpstats(data, groups, @(ind) {ind}, 'DataVars', 'dummyIndx'),
> > I get a bunch of ones (or trues), suggesting that the ind is not a
> > indicator vector (that has zeros and ones that I can use to extract the
> > rows, but the usage above looks like I'm using it as an indicator function.
> >
> > Can you explain the logic behind it?
> >
> > Thanks.
> > - Hoi

Subject: grpstats(): how to pass multiple variables to function handle?

From: Peter Perkins

Date: 1 Mar, 2014 20:34:54

Message: 9 of 10

The dummy variable needs to be (1:8)' in your example.


On 2/28/2014 8:31 PM, Hoi Wong wrote:
> Hi Peter,
>
> I often try to use grpstats() to break data in groups into one cell per
> group. I thought the trick you suggested uses logical indexing. Here's
> an example of what I'm seeing:
>
>>> DS = dataset({[1 1 3 2 2 2 2 1]', 'grp'}, {rand(8,2), 'data'},
>>> {true(8,1), 'dummy'})
> DS = grp data dummy
> 1 0.95185 0.53404 true 1 0.24895
> 0.78607 true 3 0.058954 0.55833 true 2
> 0.44563 0.5823 true 2 0.32427 0.88879 true
> 2 0.68967 0.16224 true 2 0.14302 0.76912
> true 1 0.19918 0.42956 true
>>> GS=grpstats(DS, 'grp', @(i) {DS.data(i,:)}, 'DataVars', 'dummy')
> GS = grp GroupCount Fun1_dummy 1 1
> 3 [3x2 double] 2 2 4 [4x2 double]
> 3 3 1 [1x2 double]
>>> GS.Fun1_dummy{1}
> ans =
> 0.95185 0.53404
> 0.24895 0.78607
> 0.058954 0.55833
>
>>> GS.Fun1_dummy{2}
> ans =
> 0.95185 0.53404
> 0.24895 0.78607
> 0.058954 0.55833
> 0.44563 0.5823
>
>>> GS.Fun1_dummy{3}
> ans =
> 0.95185 0.53404
>
> Everything looks good so far. Then I tried to capture the indices I use
> to reference into DS.data:
>
>>> GI=grpstats(DS, 'grp', @(i) {i}, 'DataVars', 'dummy')
> GI = grp GroupCount Fun1_dummy 1 1
> 3 [3x1 logical] 2 2 4 [4x1 logical]
> 3 3 1 [ 1]
> K>> GI.Fun1_dummy{1}
> ans =
> 1
> 1
> 1
> K>> GI.Fun1_dummy{2}
> ans =
> 1
> 1
> 1
> 1
> K>> GI.Fun1_dummy{3}
> ans =
> 1
>
> If each one of the dummy cells I captured with @(i) {i} is a bunch of
> ones (trues), wouldn't that mean the logical indices I used for
> referencing DS.data could have been these short vectors of ones that
> extracts the first 3, 4, and 1 elements for group 1, 2, and 3?
>
> I must be missing something conceptually...
>
> Thanks.
>
> Cheers,
> Hoi
>
>
> Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message
> <ler63c$iss$1@newscl01ah.mathworks.com>...
>> I can't tell exactly what you're doing, but I wouldn't expect to get a
>> bunch of ones. dummyIndex should be a numeric column vector in the
>> dataset, with the values (1:nrows)' in it. The result you get back
>> from grpstats using @(ind){ind} should be a partition of 1:nrows, one
>> vector of indices per cell, one cell per group in your data. That's
>> just a debugging trick of course. If you use a function such as
>> @(ind)corr(data.x(ind),data.y(ind)), you can see that that will take
>> the correlation of x and y with the group defined by a particular set
>> of row indices.
>>
>> By the way, you might look into tables and the rowfun method, which
>> can work across multiple variables.
>>
>>
>> On 2/27/2014 9:26 PM, Hoi Wong wrote:
>> > Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in
>> message
>> > <jb3cl5$i1$1@newscl01ah.mathworks.com>...
>> >> On 11/28/2011 9:05 PM, Hoi Wong wrote:
>> >> > I'm looking to reduce two variables (X, Y) of a grouped dataset
>> object
>> >> > into one variable by a function like corr(X,Y), but I cannot find a
>> >> good
>> >> > way to enter that as a function handle in grpstats() as they only
>> >> accept
>> >> > one input.
>> >> > Is there a neat way to achieve this without concatenating two
>> variables
>> >> > into one matrix? My dataset is pretty large and dense, so I don't
>> want
>> >> > to unnecessarily double the amount of required memory.
>> >>
>> >> Hoi, grpstats isn't designed to compute functions that work across
>> >> multiple variables. It's certainly possible to write a loop and
>> >> compute what you want by hand.
>> >>
>> >> But it is possible to trick grpstats, if you are willing to add a
>> >> "dummy" index variable, and use a function such as
>> >>
>> >> corFun = @(ind) corr(data.x(ind),data.y(ind))
>> >>
>> >> in a call to grpstats like
>> >>
>> >> gerpstats(data,groups,corFun,'DataVars','dummyIndex')
>> >>
>> >> I can't say if this will be practical with a very large array or not.
>> >> Hope it helps.
>> >
>> > Hi Peter,
>> >
>> > After a few years of using this without knowing why. Can you explain it
>> > to me why this trick works? If I just do this:
>> > grpstats(data, groups, @(ind) {ind}, 'DataVars', 'dummyIndx'),
>> > I get a bunch of ones (or trues), suggesting that the ind is not a
>> > indicator vector (that has zeros and ones that I can use to extract the
>> > rows, but the usage above looks like I'm using it as an indicator
>> function.
>> >
>> > Can you explain the logic behind it?
>> >
>> > Thanks.
>> > - Hoi

Subject: grpstats(): how to pass multiple variables to function handle?

From: Hoi Wong

Date: 4 Mar, 2014 00:41:08

Message: 10 of 10

Thanks Peter. Having the dummy variable in linear indices made much more sense.

It could be some sort of logic in the grpstats() that unintentionally also process logical dummy indices correctly in my example (I used logical indexing because I misinterpreted your 'ind' as 'indicator' instead of 'index') so I happened to get away with using all 'true' for the dummy variable though it doesn't make too much sense to me.

Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message <letg9g$182$1@newscl01ah.mathworks.com>...
> The dummy variable needs to be (1:8)' in your example.
>
>
> On 2/28/2014 8:31 PM, Hoi Wong wrote:
> > Hi Peter,
> >
> > I often try to use grpstats() to break data in groups into one cell per
> > group. I thought the trick you suggested uses logical indexing. Here's
> > an example of what I'm seeing:
> >
> >>> DS = dataset({[1 1 3 2 2 2 2 1]', 'grp'}, {rand(8,2), 'data'},
> >>> {true(8,1), 'dummy'})
> > DS = grp data dummy
> > 1 0.95185 0.53404 true 1 0.24895
> > 0.78607 true 3 0.058954 0.55833 true 2
> > 0.44563 0.5823 true 2 0.32427 0.88879 true
> > 2 0.68967 0.16224 true 2 0.14302 0.76912
> > true 1 0.19918 0.42956 true
> >>> GS=grpstats(DS, 'grp', @(i) {DS.data(i,:)}, 'DataVars', 'dummy')
> > GS = grp GroupCount Fun1_dummy 1 1
> > 3 [3x2 double] 2 2 4 [4x2 double]
> > 3 3 1 [1x2 double]
> >>> GS.Fun1_dummy{1}
> > ans =
> > 0.95185 0.53404
> > 0.24895 0.78607
> > 0.058954 0.55833
> >
> >>> GS.Fun1_dummy{2}
> > ans =
> > 0.95185 0.53404
> > 0.24895 0.78607
> > 0.058954 0.55833
> > 0.44563 0.5823
> >
> >>> GS.Fun1_dummy{3}
> > ans =
> > 0.95185 0.53404
> >
> > Everything looks good so far. Then I tried to capture the indices I use
> > to reference into DS.data:
> >
> >>> GI=grpstats(DS, 'grp', @(i) {i}, 'DataVars', 'dummy')
> > GI = grp GroupCount Fun1_dummy 1 1
> > 3 [3x1 logical] 2 2 4 [4x1 logical]
> > 3 3 1 [ 1]
> > K>> GI.Fun1_dummy{1}
> > ans =
> > 1
> > 1
> > 1
> > K>> GI.Fun1_dummy{2}
> > ans =
> > 1
> > 1
> > 1
> > 1
> > K>> GI.Fun1_dummy{3}
> > ans =
> > 1
> >
> > If each one of the dummy cells I captured with @(i) {i} is a bunch of
> > ones (trues), wouldn't that mean the logical indices I used for
> > referencing DS.data could have been these short vectors of ones that
> > extracts the first 3, 4, and 1 elements for group 1, 2, and 3?
> >
> > I must be missing something conceptually...
> >
> > Thanks.
> >
> > Cheers,
> > Hoi
> >
> >
> > Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in message
> > <ler63c$iss$1@newscl01ah.mathworks.com>...
> >> I can't tell exactly what you're doing, but I wouldn't expect to get a
> >> bunch of ones. dummyIndex should be a numeric column vector in the
> >> dataset, with the values (1:nrows)' in it. The result you get back
> >> from grpstats using @(ind){ind} should be a partition of 1:nrows, one
> >> vector of indices per cell, one cell per group in your data. That's
> >> just a debugging trick of course. If you use a function such as
> >> @(ind)corr(data.x(ind),data.y(ind)), you can see that that will take
> >> the correlation of x and y with the group defined by a particular set
> >> of row indices.
> >>
> >> By the way, you might look into tables and the rowfun method, which
> >> can work across multiple variables.
> >>
> >>
> >> On 2/27/2014 9:26 PM, Hoi Wong wrote:
> >> > Peter Perkins <Peter.Remove.Perkins.This@mathworks.com> wrote in
> >> message
> >> > <jb3cl5$i1$1@newscl01ah.mathworks.com>...
> >> >> On 11/28/2011 9:05 PM, Hoi Wong wrote:
> >> >> > I'm looking to reduce two variables (X, Y) of a grouped dataset
> >> object
> >> >> > into one variable by a function like corr(X,Y), but I cannot find a
> >> >> good
> >> >> > way to enter that as a function handle in grpstats() as they only
> >> >> accept
> >> >> > one input.
> >> >> > Is there a neat way to achieve this without concatenating two
> >> variables
> >> >> > into one matrix? My dataset is pretty large and dense, so I don't
> >> want
> >> >> > to unnecessarily double the amount of required memory.
> >> >>
> >> >> Hoi, grpstats isn't designed to compute functions that work across
> >> >> multiple variables. It's certainly possible to write a loop and
> >> >> compute what you want by hand.
> >> >>
> >> >> But it is possible to trick grpstats, if you are willing to add a
> >> >> "dummy" index variable, and use a function such as
> >> >>
> >> >> corFun = @(ind) corr(data.x(ind),data.y(ind))
> >> >>
> >> >> in a call to grpstats like
> >> >>
> >> >> gerpstats(data,groups,corFun,'DataVars','dummyIndex')
> >> >>
> >> >> I can't say if this will be practical with a very large array or not.
> >> >> Hope it helps.
> >> >
> >> > Hi Peter,
> >> >
> >> > After a few years of using this without knowing why. Can you explain it
> >> > to me why this trick works? If I just do this:
> >> > grpstats(data, groups, @(ind) {ind}, 'DataVars', 'dummyIndx'),
> >> > I get a bunch of ones (or trues), suggesting that the ind is not a
> >> > indicator vector (that has zeros and ones that I can use to extract the
> >> > rows, but the usage above looks like I'm using it as an indicator
> >> function.
> >> >
> >> > Can you explain the logic behind it?
> >> >
> >> > Thanks.
> >> > - Hoi

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us