Subscribe Bookmark RSS Feed

Removing values from a column

natalie_

Community Trekker

Joined:

Jan 6, 2016

Hi All,

 

I would like to remove values from a column.  Normally, I would use a range check column property to do this, but with this particular column, it is also dependendent on another column's value.  Is there an easy way to do this?

 

I tried the code below, but unfortunately it makes the entire column blank except for the first row.  I thought this might work because the "." represents missing values.  The data and modeling types are numeric and continuous.

 

For(i=1, i<=NRows(dt), i++,

If(dt:Col 1[i] < someValue, If(dt:Col 2[i]==1,  ,dt:Col 1[i] = "."),dt:Col 1[i] = ".");


);

3 REPLIES
natalie_

Community Trekker

Joined:

Jan 6, 2016

I found a way to make it work, but I don't know how efficient it is.  I saved the values from the columns to lists, deleted the one column, made a new column, and added the passed values to the new column.  If it wasn't a passed observation, it wasn't add and the entry in that cell is simply a "."

 

idList = List();
idList = As List(:Col X<< get values);
idLogic = List();
idLogic = As List(:Col Y<<get values);


dt << New Column("Col X", Numeric, Continuous);


For(i=1, i<=N Rows(dt), i++,

If(idList[i] < someValue, If(idLogic[i]==1,dt:Col X[i] = idList[i],),);

);

txnelson

Super User

Joined:

Jun 22, 2012

Natalie,

I believe that from an efficiency standpoint, this will do what you want

dt << select rows where( Not( dt:Col 1 < someValue & dt:Col 2 == 1 ) );
dt:Col 1[dt << get selected rows] = "";
Jim
natalie_

Community Trekker

Joined:

Jan 6, 2016

That's a good idea, too!  Thank you for your help.