set data type for new columnHi, How can I conditionally and programmatically set a data type for a new column? I have a workaround that covers numeric / character, and it could be extended for other types, but I'm trying to get the method below (marked 'not working') to work. The log shows it is not recognizing the type variable. I've tried a few things like parse() but have been so far unsuccessful.
Names Default To Here( 1 );
dt = open( "$SAMPLE_DATA\Big Class.jmp");
colType = column(dtData,"Name") << get data type;
// doesn't work, error on colType
dt << add multiple columns("New Column", 1, After("Name"), colType);
// works
dt << add multiple columns("New Column", 1, After("Name"), Numeric);
if(colType == "Character", column(dt, "New Column") << data type ("Character"));Re: set data type for new columnJim nailed it; here are a few more ways to construct that statement in case any one resonates better with your code:
Insert one expression into another using Eval Insert, Eval Expr, Parse, and Substitute
Re: set data type for new columnThe Add Multiple Columns does not appear to allow for parsing before the actual execution of the statement. Therefore, what is presented as the Add Multiple Columns needs to be fully fleshed out before giving it to JMP for execution. Here are a couple of ways to do that
Names Default To Here( 1 );
dt = Current Data Table();
coltype = "character";
Eval(
Parse(
Eval Insert(
"dt << add multiple columns(\!"New Column\!", 1, After(\!"Name\!"), ^colType^)"
)
)
);
// or
Eval(
Substitute(
Expr(
dt << add multiple columns(
"New Column",
1,
After( "Name" ),
__type__
)
),
Expr( __type__ ), colType));