大家好!
比如這段代碼,把數據讀入“copydt”,如何用JSL一步讀取“copydt”中的“KATIE”,我在代碼中用了兩步。
dt = Open("$SAMPLE_DATA\Big class.jmp");Wait(0);
copydt = dt[0,0];
dt[0,0] = .;
a=copydt[1,1];
b=a[1,1];
c={copydt[1,1][1,1]};
dt[0,0] = copydt;Wait(0);
另外,如何直接用JSL修改“copydt”中的數據呢?
例如,將第一行的名稱更改為“KATIE2”,並將第一行的年齡更改為 18。
將修改後的數據寫入原數據表。
謝謝!

要回答本次討論的主題中提出的問題,請對保存從數據表形成的數據的變量使用下標。 您可以在執行示例時使用調試器或日誌來檢查結果。 我會使用日誌。
dt = Open("$SAMPLE_DATA\Big class.jmp");
copydt = dt[0,0];
dt[0,0] 中使用的下標引用所有行和所有列 - 整個表。 變量 copydt 包含一個列表列表。 每個子列表是原始數據表中的一行。
dt[0,0] = .;
所有行和所有列都發生缺失分配 - 整個表。 數據表現在包含 5 個數據列的 40 行缺失值。
a = copydt[1,1];
此表達式使用標準列表下標。 您正在檢索列表中的第一項。 該值是一個列表,表示原始數據表中的第一行。 當你學習如何給列表下標時,你就會知道這個表達式要求兩次相同的東西——第一個元素。 以下所有表達式都是相同的。
a = copydt[1];
a = copydt[1,1];
a = copydt[1,1,1];
所以第一種形式更簡潔,更受青睞。
b = a[1,1];
與前面的表達式相同。您正在檢索列表中的第一項。 該值為原始數據表中第一行第一列的字符串。
c = { copydt[1,1][1,1] }; // c = { copydt[1][1] } is equivalent, sufficient, and preferred
您已將單元素列表分配給變量。 沒有對列表項進行評估。
dt[0,0] = copydt;
您將列表的列表分配給整個數據表。 每個子列表成為數據表中的新行。 此步驟演示了第二行和最後一行之間的對稱行為。
要回答討論正文中提出的問題,您可以使用下標:
copydt[1][1] = "Katie2";
copydt[1][2] = 18;
下標是嵌套的。 所以讀copydt[1][1] = "凱蒂2"將“Katie2”分配給第一項內的第一項。 讀copydt[1][2] = 18將 18 分配給第一項內的第二項。
請注意,在數據表、矩陣和列表數據結構之間打亂數據的能力隨 JMP 的每個版本而變化。 通常,功能會增加,結構之間的差異會減少。
所以,我已經解釋了你做了什麼,但我不知道你為什麼這樣做或你想要完成什麼。 你的主題非常廣泛和模糊。 你想讓我做什麼?
選擇幫助>圖書>腳本指南在 JMP 中獲取數據表、列表和矩陣的更完整信息和解釋。