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 字節格式,請查看以下示例:
// set JMP preferences to accept short numeric words
Set Preference( Allow short numeric data format( 1 ) );
dt = New Table( "Untitled",
Add Rows( 3 ),
New Column( "1 Byte Format",
Numeric( 1 ),
"Continuous",
Set Values( [1, 2, 3] )
),
New Column( "New Column",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 5, 6] )
)
);
dt:New Column << set data type("numeric", 1);回复: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 ) );
回复:JSL:如何將列更改為 1 字節整數謝謝! 我希望找到一種方法,在創建列時告訴 JMP 它只會是 1 和 0,因此 1 字節整數就足夠了。
我可以使用列屬性菜單強制列為 1、2 或 4 字節整數,但我無法通過腳本來做到這一點,這對我來說似乎很奇怪。我想知道這是否與以下事實有關:有一個允許這些數據類型的首選項,而 JSL 不夠“智能”,無法知道是否啟用了此功能,但 GUI 卻啟用了。

壓縮是一種解決方案,但如果有人知道如何在填充列之前設置建模類型,我仍然會感興趣。
回复:JSL:如何將列更改為 1 字節整數使用“1-byte”搜索腳本索引:

似乎正在工作:

回覆:JSL:如何將列改為 1 位元組整數請注意。
N 位元整數類型適合壓縮列。
另一方面,用戶必須小心後續計算,尤其是當透過
右鍵/新公式列/公式選單:

讓我們從
dt = New Table( "numeric data",
Add Rows( 3 ),
New Column( "numeric 1 byte Integer",
Numeric( 1 ),
Set Values( [1,2,3] ),
),
New Column( "numeric (default)",
Numeric,
Set Values( [10,20,30] ),
)
);
並計算

JMP 複製輸入列的資料類型,它將傳回 0.1 而不是:

另一方面,當使用者選擇兩個輸入列並透過以下方式計算“比率”時:

JMP 使用

設定...結果為 0.1:
