你好,
儘管查看了許多討論/腳本索引..,我無法得到答案,即如何編寫 JSL 腳本,該腳本將接管新的列命令,從而能夠輸入每個值重複 N 次的序列資料。 我知道如何手動執行此操作 - 感謝 Mark B...在其中一次討論中的回复,但我很難編寫腳本
例如
N_DOE= 10
N_XRF=4
=> {1,1,1,1,2,2,2,2,3,3,3,3, ...10,10,10,10}
//How may I get a column with repeating values
dt=current data table();
N_DOE=10;
N_XRF=4;
seq = sequence(1,N_DOE,1,N_XRF);
dt << new column("Run", "numeric", "ordinal");
//dt:run << set each value(seq,); // this works, but it is just"1" for all rows
dt:run << set each value(i=1,i<N_DOE></N_DOE>@PS_Ato ,吉姆, @tx尼爾森已經給出了解決方案。
JMP 功能,順序()和數數()在處理資料表時是非常酷的函數,因為這兩個函數都依賴排()當前數據表。
有時您可能只想將序列放在矩陣中。一種方法是矩陣函數直接產物(amat, bmat) 。下面的腳本與您的原始腳本類似;它創建序列重複值的向量,然後將它們指派給新列。
這是僅供參考。如果您沒有使用過矩陣或研究過線性代數,這可能不會是您想到的第一個函數。
Names Default to Here(1);
N_DOE=10;
N_XRF=4;
New Table("Dummy", add rows(N_DOE * N_XRF));
dt=current data table();
seq = Transpose(Direct Product(Index(1,N_DOE),J(1,N_XRF,1)));
dt << new column("Run", "numeric", "ordinal", values(seq));
/* Log output
seq = Transpose(Direct Product(Index(1,N_DOE),J(1,N_XRF,1)));
[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10]
*/
Sequence() 函數實際上只能在公式中使用。 在腳本索引中查看它
幫助==>腳本索引......序列
這是一個工作範例
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
N_DOE=10;
N_XRF=4;
dt << new column("Run", "numeric", "ordinal");
// Create the JSL required to set the format and then
// execute it
Eval( Parse(
"dt:run << set formula( sequence(1, " || char(N_DOE) ||
", ince = 1, n = " || char(N_XRF) || "));"
)
);