你好,
儘管查看了許多討論/腳本索引 ..,但我無法得到答案,如何編寫 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 , 吉姆, @txnelson已經提供了解決方案。
JMP函數,順序()和數數()在處理數據表時是非常酷的函數,因為這兩個函數都依賴於排()當前數據表。
有時您可能只希望矩陣中的序列。一種方法是矩陣函數直接產品(amat, bmat) .下面的腳本與您的原始腳本相似;它創建序號一個重複值的向量,然後將它們分配給新列。
這是作為 FYI 提供的。如果您沒有使用過矩陣或沒有學習過線性代數,這可能不會是您想到的第一個函數。
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) || "));"
)
);