JSL:如何将列更改为 1 字节整数我正在处理大文件,并试图在内存方面更加节俭。 我想使用 JSL 将某些列的数据类型更改为“1 字节整数”,但无法弄清楚。
我已将我的表格首选项设置为“允许短数字数据格式”,并且可以手动更改列的数据类型,但我需要使用 JSL 来完成。如果我手动更改数据类型,然后将该列复制并粘贴到脚本中,我会看到 1 字节整数的数据类型似乎是 "Numeric(1)" 。 也许这是一个线索。
以下是我尝试过的一些事情:
dt = open("$sample_data/big class.jmp");
dt:age << Data Type(1-byte integer); //error "Agument to Type..."
dt:age << Data Type("1-byte integer"); //error "Agument to Type..."
dt:age << Data Type(Character); //this works, changes to Character
dt:age << Data Type(Numeric); //this works, changes to Numeric
dt:age << Data Type(Numeric(1)); //no error, but data type stays Numeric这可能很简单,但到目前为止我在 JMP 帮助或社区中没有找到解决方案。 任何帮助,将不胜感激。 (我在 JMP 16.1 上。)
数据表脚本回复:JSL:如何将列更改为 1 字节整数使用“1 字节”搜索脚本索引:

似乎正在工作:

回复:JSL:如何将列更改为 1 字节整数谢谢! 我希望找到一种方法来在创建列时告诉 JMP,它只会是 1 和 0,因此 1 字节整数就足够了。
我可以使用列属性菜单将列强制为 1、2 或 4 字节整数,这对我来说似乎很奇怪,但我不能用脚本来做到这一点。我想知道这是否与存在允许这些数据类型的首选项选项有关,而 JSL 不够“聪明”,无法知道是否启用了此功能,但 GUI 已启用。

压缩是一种解决方案,但如果有人知道如何在填充列之前设置建模类型,我仍然会感兴趣。
回复:JSL:如何将列更改为 1 字节整数下面是一个示例,它使用单个字节将一个新变量作为一个具有短字长的有符号整数的数据列。
Names Default to Here( 1 );
// open target data table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// set JMP preferences to accept short numeric words
Set Preference( Allow short numeric data format( 1 ) );
// create a new column using shortened numeric data type
shorty = dt << New Column( "Short Age", Numeric( 1 ), Continuous,
Values( :age << Get As Matrix )
);
// your done. maybe set preference back to default
Set Preference( Allow short numeric data format( 0 ) );