Highlighted
Level III

Select rows based of multiple conditions

Hello,

I'm trying to select rows where either the second or third column have a value below 10^-9, or if there is a missing value in the 4th column. The problem appears to be with the less than operator and I cannot figure out why.

Example table:

 Col1 Col2 Col3 Col4 1 0.00000059 0.000000308 A 2 4.08e-9 -8.1e-11 B 3 -1.11e-10 1.02e-10

Here's the code:

``````dtColNames = dt << get ColumnNames("String");
val = 10^-9;
dt << Select Where((dt:dtColNames[2]<val | dt:dtColNames[3]<val ) | ismissing(dt:dtColNames[4]));``````

If I simplify this down to the following:

``````dtColNames = dt << get ColumnNames("String");
val = 10^-9;
dt << Select Where(dt:dtColNames[2]<val );``````

nothing is selected, when row 3 should be.

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Staff

Re: Select rows based of multiple conditions

A character string is not a column name or reference. You need to convert the string to a column reference.

``dt << Select Where( Column( dt, dtColNames[2] )[] < val | Column( dt, dtColNames[3] )[] < val | ismissing( Column( dt, dtColNames[4] )[] ));``
Learn it once, use it forever!
2 REPLIES 2
Highlighted
Staff

Re: Select rows based of multiple conditions

A character string is not a column name or reference. You need to convert the string to a column reference.

``dt << Select Where( Column( dt, dtColNames[2] )[] < val | Column( dt, dtColNames[3] )[] < val | ismissing( Column( dt, dtColNames[4] )[] ));``
Learn it once, use it forever!
Highlighted
Level III

Re: Select rows based of multiple conditions

Ah! Thanks!
Article Labels

There are no labels assigned to this post.