Community Trekker

Joined:

Feb 17, 2013

## Rename column name based on value from xth rows

Hi All,

I am trying to use jsl to rename the column name of a datatable using rows value from row that met predefined criteria.

My script is as followed:

dt = Open();
Current Data Table() << set name( "ABC" );
dt = Data Table( "ABC" );
lastcol = N Col( dt );
header=dt<<Get Rows Where (:(2)=="Colour"); // this is the criteria, i wanted to identify the row where the value in column2 is "Colour"
For( i = 2, i <= lastcol, i++,
Column( i ) << set Name( Column( i )[header] )
);

unfortunately this method doesnt work. Can anyone please guide or share me what's wrong with the script and how can i achieve what i want? Thanks a lot!

1 ACCEPTED SOLUTION

Accepted Solutions

Super User

Joined:

Jun 23, 2011

Solution

## Re: Rename column name based on value from xth rows

<<Get rows where() returns a matrix. If there is only one instance of "Colour" the matrix will have a single number. You need to extract that number of the matrix header before using it as an index.

Here are two examples that both should work.

For( i = 2, i <= lastcol, i++,

Column( i ) << set Name( Column(i)[header] )

);

For( i = 2, i <= lastcol, i++,

Column( i ) << set Name( Column(i)[header[1]] ) // exctract the (first) number of the matrix header

);

2 REPLIES

Super User

Joined:

Jun 23, 2011

Solution

## Re: Rename column name based on value from xth rows

<<Get rows where() returns a matrix. If there is only one instance of "Colour" the matrix will have a single number. You need to extract that number of the matrix header before using it as an index.

Here are two examples that both should work.

For( i = 2, i <= lastcol, i++,

Column( i ) << set Name( Column(i)[header] )

);

For( i = 2, i <= lastcol, i++,

Column( i ) << set Name( Column(i)[header[1]] ) // exctract the (first) number of the matrix header

);

Community Trekker

Joined:

Feb 17, 2013

## Re: Rename column name based on value from xth rows

Thank you MS! This works!

By the way, how do i mark this as "solved" or "answered"?