使用列和行

本示範將說明如何管理資料列和資料表行。我將使用腳本建立一個只有一列的新資料表。因此,在課程日誌部分中,我將點擊“建立新的資料表和列”。您可以看到我們正在使用新的表格函數。我們將把由此建立的資料表物件引用儲存在變數 dt 中。該表將被稱為測試資料。我將有一個名為 pH 的單列。資料類型將是數字,建模類型將是連續的。然後我使用值參數,我也可以說設定值 - 這兩者是同義詞 - 使用索引運算子(中綴運算子)進行填充。所以我們要以一為增量從一數到七。因為我提供了這些值,所以這就是該資料表將具有的行數。有一個可選參數可以添加指定數量的行,如果我最初沒有填充值,我可能會使用它。您還會看到,如果您讓 JMP 使用該獲取腳本訊息為您編寫資料表腳本,則該腳本將包含新增行的參數。我們還將使用固定十進位參數指定一種格式,其中包含 和 3 位小數的欄位。我們將打開列上的鎖定選項,這樣如果不解鎖就無法修改它。我們將使用範圍檢查參數來指派該列屬性。這裡的語法 LELE ( ) 只是表示小於或等於列中的值小於或等於最後我們有一個設定屬性參數的範例,其中我們正在設定規格限制的屬性。由於指示規格限制的選項不只一個,因此我們列出了三個限制——下限規格、上限規格和目標。還要記住,新列的所有這些可選參數都可以在建立列後作為訊息發送到列,或者如我們在此處看到的,作為新列的參數。所以我要運行這個腳本。您可以在下面的日誌中看到,我們已經建立了一個名為測試資料的資料表物件實例。當然,如果我將滑鼠懸停在腳本中的變數 dt 上,我就會看到這個。我得到了具有一列和七行的資料表。我們可以從表格本身看到腳本的所有元素。一方面,我知道資料類型是數字,因為我可以看到建模類型圖示顯示它是連續的。而連續建模類型僅採用數值資料。且數值也是右對齊的。如果我們將數字視為字符,則它們將被左對齊。如果我們看一下列面板中的圖標,就會看到鎖定圖標,表示我鎖定了該列。小複選標記表示範圍檢查。然後星號表示任意數量的沒有自己獨特符號的附加屬性。因此,要進入列資訊對話框,當然有幾種方法。我們可以點擊這個星號來走捷徑。我們看到該屬性是規格限制。同樣,此下拉式選單中可能會列出多個屬性。我可以選擇那個。這就帶我進入了專欄資訊。當然,我們也可以選擇列並使用列選單或右鍵單擊列並選擇列資訊。因此,設定屬性參數中指示的值存在規格限制。我們也有該範圍檢查。再說一次,它是小於或等於,小於或等於 - LELE 在通用語法中表示 - 然後我們得到實際值。這裡我們可以看到該列已經被鎖定。資料類型為數字。建模類型是連續的。格式為固定小數,欄位寬度為此列可顯示的最大字元數,小數點後三位。所以我要取消列資訊對話框。我將繼續並取消選擇該 pH 列。現在,列屬性下拉式選單中有一個選項可以設定您自己的使用者列屬性。如果您以互動方式執行此操作,則選單選項就稱為「其他」。然後您可以命名該屬性以及它將要採用的任何值。我在日誌中有一個名為「新增使用者列屬性」的腳本。我們將其發送到 pH 柱。該使用者列的正確名稱應該是“儀表校準”。我只是想將今天的日期格式化為月、日、年的字串。這裡的文字是設定屬性的第二個參數,在本例中,我使用 Today 函數來檢索自執行此行程式碼時一月午夜以來的秒數。我將其包裝在格式函數中並指定我想要顯示的字串格式。再次強調,當您編寫腳本時,這可能是一個反覆試驗的過程。如果我只提供我所強調的內容 - 我認為我可能有 - 是的。我想確保我指定的括號數量正確。讓我來運行一下我剛剛強調的內容。所以我選擇它。然後我按 Ctrl+R。我發現該字串在日誌中出現的樣式與我想要的完全一致。因此,我可能會運行這個設定屬性訊息,這個帶有屬性訊息的程式碼,最初沒有 eval 函數。如果我這樣做了,當我查看儀表校準屬性的列資訊時,我所看到的就是程式碼。它實際上不會進行評估。因此設定屬性可能不會評估其第二個參數,需要我們將其包裝在 eval 函數中。現在,在設定屬性訊息之外運行它,這將只是 - 讓我繼續運行它 - 它將返回完全相同的內容。因此,這可能是因為您最初只具有“今日”函數的格式,然後發現它沒有在列屬性中傳回您想要的內容。然後你會意識到你需要加入那個評估。因此我不會選擇任何內容並運行該腳本。我在日誌中得到的消息是可以簡單編寫腳本的。這意味著我做了一些可以編寫腳本的事情。因此,有時您會發現運行一些程式碼時您期望發生的事情並沒有發生。您可能只會看到這個可編寫腳本的訊息。因此,您需要嘗試找出這種情況下出了什麼問題,因為您實際上無法從“可編寫腳本”這個詞中獲得資訊。但在我們的例子中,讓我們先進入正題。再次,我們只需單擊此星號即可獲取列資訊。我這樣做是為了表明現在菜單中還有另一項。因此,任何沒有自己獨特圖示的列屬性都會顯示在這個星號選單中。我將單擊“儀表校準”,這樣當列資訊對話方塊打開時,它就是所選的屬性。還有使用Today函數並將其格式化為字串的評估結果。所以我會取消它。我將使用新增使用者列屬性腳本編輯器視窗來對該表進行更多的操作。現在它不需要那麼寬。所以我現在想將新列作為訊息發送到資料表。我將把這個新欄位命名為 Hydronium。創建後我將添加一個公式。當然,我可以將公式新增為列建立的一部分。而且我實際上還要將程式碼產生的列物件參考儲存在變數中。我稱之為 HYD,hyd 代表水合氫離子。我將把向 dt 發送訊息的結果賦值給它,因為那是我們儲存測試資料物件引用的地方。所以我將訊息發送到 dt 新列,然後打開括號和字串。新欄位唯一必需的參數是列名 Hydronium。我將繼續運行該操作。將結果儲存在這個變數中意味著我不需要再次輸入整個名稱 Hydronium。所以我不必存儲該物件引用。我仍然可以與該專欄進行交流。但這只是為它指定了縮短的名稱,從而節省了我一點打字時間。現在,假設,正如我所提到的,我想在此列中新增一個公式。因此我將轉到新的一行。我要小心,不要意外地再次運行整個腳本並創建第二個 Hydronium 列。所以我要把第一行註解掉。我將向變數 hyd 發送一條訊息。並且該訊息是設定公式。我要對公式進行負 pH 值的冪運算,因此要進行 - 然後我會打開括號 - 減 - 並且我會使用冒號範圍運算符,因為我指的是 pH 值列,只是為了安全起見,以防我的全局命名空間中存在任何其他變量名 ph。我沒有使用“此處的預設名稱”,儘管在實踐中我們建議將其作為最佳實踐。所以我要輸入分號並執行這行腳本。再次,我們在日誌中看到了可編寫腳本的訊息。但我們可以檢查表格並發現這些值已被填入。還有一些其他的事情需要處理我們的列和行。假設我想為資料表中的儲存格著色,以標記超過某個數字的值。所以我要轉到腳本編輯器視窗中的新行。我將創建一個名為callout的變數。並且我將指定儲存在 dt 中接收訊息 get rows 的資料表的結果在哪裡。然後我的布林比較將是 pH 列中的值大於所以我將運行那一行。您可以看到,行和取得行將向我傳回行號的列向量。然後我要向 pH 發送一條訊息。由於該列物件引用未儲存在變數中,因此我只需透過名稱來引用它。因此 pH 值將會接收顏色細胞的訊息。這是我們可以向專欄發送的另一則訊息。我將使用顏色名稱作為第一個參數。還有索引值,您可以使用 rgb 值。我將使用名稱作為字串。所以我要把這些單元格塗成紅色。然後第二個參數是,您想要為哪些單元格著色?您可以處理整列,也可以提供行號。因此我將使用變數 Callout,它儲存 pH 值大於 3 的行。我就講這個。順便說一句,請注意我忘了加分號。這表示結尾的分號是不必要的。只有當我有其他論點時才會這麼做。如果我們現在查看資料表,您會發現這四個單元格已被塗成紅色。因此,如果您有一個大數據表並且某些列可能有規格限制,那麼這可能是一件好事。例如,您可以根據超出規格的規格限制為儲存格著色,以便在開始查看圖表之前在資料表中以視覺方式標記這些儲存格。您當然不必為單元格著色,但這是一個可以使用的選項。因此,在這個演示中,我們看到了一個範例,即創建一個帶有列的新資料表,向該資料表添加一列,並稍微嘗試我們可以對列和行執行的一些操作。
回复:使用列和行我嘗試在沒有“Eval”的情況下運行設置屬性,它仍然有效。 (當前使用 JMP 16.2)
:pH << Set Property( "Meter Calibration2", Format( Today(), "m/d/y" ) );
