引用其他表中的列我正在嘗試透過讀取兩個來源表來建立一個新表。我想避免將它們加入到一張大表中並從那裡進行操作。新表將是兩個來源表之間的增量數組。該腳本可以很好地創建列,但沒有用任何內容填充它們。我假設在我的公式中引用其他表中的列時缺少一些語法。
predt = Open("C:\...\pre_data.jmp");
predtcols = predt << Get Column Names (string);
postdt = Open("C:\...\post_data.jmp");
postdtcols = postdt << Get Column Names (string);
dt = new table ("delta_values");
for (i=1, i <= NCols(predt), i++,
dt << New column ("delta_"||predtcols[i], numeric, continuous, formula(postdt:column(postdtcols[i]) - predt:column(predtcols[i])));
);資料混合與清理回覆:引用其他表中的列這很容易檢查。 雙擊 JMP 中的列標題,將開啟「列資訊」視窗。 它將列出真實的列名稱。回覆:引用其他表中的列我從 Excel 工作表(我們測試器的輸出)匯入了列名稱,所以我認為它們隱藏在列名稱中
回覆:引用其他表中的列單位(定義為列屬性)不是列名稱的一部分。
回覆:引用其他表中的列啊。看起來第 2 列之後的所有列的名稱中都有一個 (xxx) - 測量單位。可能是這樣嗎?日誌對每一列都會拋出這樣的錯誤
回覆:引用其他表中的列我認為這是一個數據問題。該程式碼對於我的 2 列測試案例運行良好,但它被編寫為處理變數“predt”中找到的盡可能多的列
For( i = 1, i <= N Cols( predt ), i++,
因此,您需要做的是單步執行程式碼並檢查變數值並查看發生了什麼。如果您的數據沒有發佈到此討論中,我不知道發生了什麼。
日誌中是否顯示任何訊息?
回覆:引用其他表中的列感謝您及時的回覆!看來我只能用這個腳本來獲得前兩列的增量。這些列的格式與其餘列相同(數字,連續),所以我不確定這裡發生了什麼。
回覆:引用其他表中的列你有幾個問題在嘲笑你。
- 您需要<< Add Rows()到空資料表;
- 使用 Column() 函數的格式不是 postdt:column( postcols[i] )。如果這是在這種情況下使用的方法,則形式將是 Column( postdt, postcols[i] )。但這不是這裡所需要的
- 在 New Column() 操作中分配公式有點棘手。設定的 Formula() 在成為公式之前不會被評估。也就是說,如果您將 postcols[i] 放入公式中,它在建立公式時不會查找 postcols[i] 的值,它只是將 postcols[i] 放入公式中,然後嘗試執行它當公式運行時。問題是,由於變數“i”在循環中被一遍又一遍地重新分配,因此每次在 JSL 中更改“i”時,引用“i”的每個公式都會發生更改。那不是你想要的。因此,需要做的是在 JSL 中評估您想要的確切程式碼字串,然後執行該 JSL 以建立新列。您可以在下面更正後的 JSL 中看到這一點
predt = data table("one");//Open( "C:\...\pre_data.jmp" );
predtcols = predt << Get Column Names( string );
postdt = data table("two");//Open( "C:\...\post_data.jmp" );
postdtcols = postdt << Get Column Names( string );
dt = New Table( "delta_values" );
dt << add rows(nrows(postdt));
For( i = 1, i <= N Cols( predt ), i++,
Eval(
Parse(
"dt << New Column( \!"delta_" || predtcols[i] || "\!",
numeric,
continuous,
formula( postdt:" ||
postdtcols[i] || "[Row()] - predt:" || predtcols[i] || "[Row()]) )'"
)
)
);
dt << delete columns("column 1");