Subscribe Bookmark RSS Feed

JSL: Copy data table

JPKO

Occasional Contributor

Joined:

Jun 28, 2017

This is probably really simple, but I've been through the scripting guide and I've searched the community discussions without any luck so here goes:

 

I'm trying to copy a comple data table with values, column properties and all. Is there a command for this? I tried to hack something together:

dt=current data table();

colNames = dt << Get Column Names( String );

ndt = New Table("Plotting Data", /*invisible,*/);

For (i=1, i <= NCols(dt), i++,
	New Column(colNames[i]);
	colProps = Column(dt, colNames[i]) << Get Column Properties;
	Column( ndt, colNames[i]) << Add Column Properties( colProps );
);

ndt << Add Rows(NRows(dt));
For (j=1, j <= NCols(dt), j++,
	colVals = Column(dt, colNames[j]) << Get values;
	Column(ndt, colNames[j]) << Set values( colVals );
);

However besides being overly complicated for something rather simple, it won't copy character data because data type is apparently not included in column properties.

 

 

Thanks,

Johan

1 ACCEPTED SOLUTION

Accepted Solutions
ian_jmp

Staff

Joined:

Jun 23, 2011

Solution

Here's one way:

NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Eval(dt1 << getScript);
3 REPLIES
JPKO

Occasional Contributor

Joined:

Jun 28, 2017

BTW sorry for the invisible command that's blocked out. It's not important for my question.
ian_jmp

Staff

Joined:

Jun 23, 2011

Solution

Here's one way:

NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Eval(dt1 << getScript);
Justin_Chilton

Joined:

Aug 27, 2015

Another way is to subset the table with all rows and all columns.

dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt_copy = dt << Subset( All rows, Selected columns only( 0 ) );
Justin