Subscribe Bookmark RSS Feed

Select specific columns from a table

aumair

Occasional Contributor

Joined:

Feb 9, 2017

Hi All

 
I have two tables and I want to subset only specific columns of the Main_Table, which are present as row values in the Cols_Needed table.

 

For example for the tables below, I want to subset column A, I and F of Main_Table, because "A', "I" and "F" are present as row values in the Cols_Needed table. 

 

Thanks!

Ahmad  

 

 

dt = New Table( "Main_Table",
Add Rows( 8 ),
New Column( "A", Numeric, Continuous, Format( "Best", 12 ), Set Values( [1, 2, 3, 1, 1, 1, 1, 1] ) ),
New Column( "B", Numeric, Continuous, Format( "Best", 12 ), Set Values( [4, 5, 6, 1, 1, 1, 1, 1] ) ),
New Column( "C", Numeric, Continuous, Format( "Best", 12 ), Set Values( [7, 8, 9, 1, 1, 1, 1, 1] ) ),
New Column( "D", Numeric, Continuous, Format( "Best", 12 ), Set Values( [10, 11, 12, 1, 1, 1, 1, 1] ) ),
New Column( "E", Numeric, Continuous, Format( "Best", 12 ), Set Values( [13, 14, 15, 1, 1, 1, 1, 1] ) ),
New Column( "F", Numeric, Continuous, Format( "Best", 12 ), Set Values( [5, 2, 3, 1, 1, 1, 1, 1] ) ),
New Column( "G", Numeric, Continuous, Format( "Best", 12 ), Set Values( [99, 8, 9, 1, 1, 1, 1, 1] ) ),
New Column( "I", Numeric, Continuous, Format( "Best", 12 ), Set Values( [15, 14, 15, 1, 1, 1, 1, 1] ) )
);

dt = New Table( "Cols_Needed",
Add Rows( 3 ),
New Column( "Col", Character, Set Values( {"A", "I", "F"}) ),
New Column( "Val", Numeric, Continuous, Format( "Best", 12 ), Set Values( [1,2,3] ) )
);

1 ACCEPTED SOLUTION

Accepted Solutions
ian_jmp

Staff

Joined:

Jun 23, 2011

Solution
Names Default To Here( 1 );

dt1 = New Table( "Main_Table",
	Add Rows( 8 ),
	New Column( "A", Numeric, Continuous, Format( "Best", 12 ), Set Values( [1, 2, 3, 1, 1, 1, 1, 1] ) ),
	New Column( "B", Numeric, Continuous, Format( "Best", 12 ), Set Values( [4, 5, 6, 1, 1, 1, 1, 1] ) ),
	New Column( "C", Numeric, Continuous, Format( "Best", 12 ), Set Values( [7, 8, 9, 1, 1, 1, 1, 1] ) ),
	New Column( "D", Numeric, Continuous, Format( "Best", 12 ), Set Values( [10, 11, 12, 1, 1, 1, 1, 1] ) ),
	New Column( "E", Numeric, Continuous, Format( "Best", 12 ), Set Values( [13, 14, 15, 1, 1, 1, 1, 1] ) ),
	New Column( "F", Numeric, Continuous, Format( "Best", 12 ), Set Values( [5, 2, 3, 1, 1, 1, 1, 1] ) ),
	New Column( "G", Numeric, Continuous, Format( "Best", 12 ), Set Values( [99, 8, 9, 1, 1, 1, 1, 1] ) ),
	New Column( "I", Numeric, Continuous, Format( "Best", 12 ), Set Values( [15, 14, 15, 1, 1, 1, 1, 1] ) )
);

dt2 = New Table( "Cols_Needed",
	Add Rows( 3 ),
	New Column( "Col", Character, Set Values( {"A", "I", "F"} ) ),
	New Column( "Val", Numeric, Continuous, Format( "Best", 12 ), Set Values( [1, 2, 3] ) )
);

subsetCols = Column( dt2, "Col" ) << getValues;

dt3 = dt1 << Subset( Columns( subsetCols ) );
1 REPLY
ian_jmp

Staff

Joined:

Jun 23, 2011

Solution
Names Default To Here( 1 );

dt1 = New Table( "Main_Table",
	Add Rows( 8 ),
	New Column( "A", Numeric, Continuous, Format( "Best", 12 ), Set Values( [1, 2, 3, 1, 1, 1, 1, 1] ) ),
	New Column( "B", Numeric, Continuous, Format( "Best", 12 ), Set Values( [4, 5, 6, 1, 1, 1, 1, 1] ) ),
	New Column( "C", Numeric, Continuous, Format( "Best", 12 ), Set Values( [7, 8, 9, 1, 1, 1, 1, 1] ) ),
	New Column( "D", Numeric, Continuous, Format( "Best", 12 ), Set Values( [10, 11, 12, 1, 1, 1, 1, 1] ) ),
	New Column( "E", Numeric, Continuous, Format( "Best", 12 ), Set Values( [13, 14, 15, 1, 1, 1, 1, 1] ) ),
	New Column( "F", Numeric, Continuous, Format( "Best", 12 ), Set Values( [5, 2, 3, 1, 1, 1, 1, 1] ) ),
	New Column( "G", Numeric, Continuous, Format( "Best", 12 ), Set Values( [99, 8, 9, 1, 1, 1, 1, 1] ) ),
	New Column( "I", Numeric, Continuous, Format( "Best", 12 ), Set Values( [15, 14, 15, 1, 1, 1, 1, 1] ) )
);

dt2 = New Table( "Cols_Needed",
	Add Rows( 3 ),
	New Column( "Col", Character, Set Values( {"A", "I", "F"} ) ),
	New Column( "Val", Numeric, Continuous, Format( "Best", 12 ), Set Values( [1, 2, 3] ) )
);

subsetCols = Column( dt2, "Col" ) << getValues;

dt3 = dt1 << Subset( Columns( subsetCols ) );