cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Submit your abstract to the call for content for Discovery Summit Americas by April 23. Selected abstracts will be presented at Discovery Summit, Oct. 21- 24.
Discovery is online this week, April 16 and 18. Join us for these exciting interactive sessions.
Choose Language Hide Translation Bar
JPKO
Level III

JSL: Copy data table

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

Re: JSL: Copy data table

Here's one way:

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

View solution in original post

4 REPLIES 4
JPKO
Level III

Re: JSL: Copy data table

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

Re: JSL: Copy data table

Here's one way:

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

Re: JSL: Copy data table

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
ThomasDickel
Level III

Re: JSL: Copy data table

Hi, 

we just ran into an error using the proposed solution "Eval( dt << Get script)" while using two nested "For each row" commands.

Replacing this with the "dt<< Subset" made the function work. So there must be a difference between these two commands.

 

Best Regards,

Thomas