選擇和子集數據

因此,在本示範中,我們將研究選擇特定的行並使用子集命令(可在「表格」選單中互動找到)來提取資料表的子集。因此,在課程日誌部分中,我將點擊“滑雪小屋溫度數據”。這是一個很寬的數據表,但相當短。因此,我們的場景是,我們有一個滑雪勝地,裡面有一個氣象站,它每小時記錄一次溫度並將其保存到某個文件中。因此,每次觀察時,文件中都會包含日期以及每小時的溫度讀數。它以上午為統計數據,因此溫度也是上午的。現在讓我們假設,當氣溫降至攝氏零下度以下時,我們計劃啟動造雪機,因為在那個溫度下可能太冷而無法下雪。因此,我們要查看歷史資料記錄,找出我們使用造雪機的日期。也許我們正在試圖證明添加另一台機器或更換現有機器是合理的。這裡有幾件事。一是這個溫度是以華氏溫標記錄的,而不是攝氏溫標。其次,我們只使用了一小部分數據。現在這些都是按日期排序的,但這代表了我們的最佳實踐之一,即當您要處理大型資料集時,請嘗試獲取具有代表性的觀察樣本來開發腳本,以便您可以針對較小的子集開發和測試腳本。再次,希望能代表您可能在數據中發現的任何問題。然後您可以針對完整的資料集對其進行測試。因此,在這個例子中,希望這是有代表性的,我們只取得了一週的數據。另一件事是,我們記錄了華氏溫度,但我們的截止溫度是零下攝氏度。因此,雖然我們可以將零下攝氏度轉換為華氏度,但我們將重申使用向量化運算的概念,並將所有華氏度溫度提取為矩陣,然後將其轉換為攝氏溫度。因此,日誌中有一個預先寫好的腳本,稱為「隔離造雪日腳本」。我將一次運行一個部分。在這個演示中,我實際上將使用嵌入式日誌選項,而不是在日誌視窗之間來回導航。因此我將在腳本編輯器視窗中單擊滑鼠右鍵,然後選擇“顯示嵌入式日誌”。我將調整它的大小,以便我們仍然可以在視窗的編輯器部分看到整個腳本。因此我將選擇行並運行它。這樣就取得了當前資料表、滑雪小屋溫度資料表的引用,並將其儲存在 dt 中。然後我將以矩陣形式發送訊息並將其儲存在變數 tempF 中。所以我要運行行並且經常使用更大的矩陣,而不是在日誌中顯示矩陣,我們只獲取矩陣維度和已分配的指示。現在註意它有七行和七列。如果我導航回資料表,就會發現該資料表中有列。那為什麼我們只提取列呢?好吧,如果你看一下日期列,首先你會發現它是名義上的。這表明這可能被視為字元資料而不是數字。我可以進一步確認,我當然可以轉到列信息,但我還可以通過使列稍微寬一點並注意值是左對齊來確認,這就是 JMP 處理字符數據的方式。因此,當我將 get 作為矩陣發送到資料表時,它會忽略這個字元列,只提取數字列。然後,Line 將獲取變數 tempF(儲存在那裡的矩陣)中的每個元素,並將其轉換為攝氏度並將其儲存在 tempC 中。我再次在日誌中收到相同的訊息,但您當然可以將滑鼠懸停在 tempf 或 tempc 上來查看它們的值。接下來我想計算 tempC 中的行數,我一直提到這是最佳實踐,即在循環之外計算行數或列數。因此我計算矩陣 tempC 中的行數並將其儲存在變數 nr 中。所以我會跑線,當然有七條。我想做的另一件事是——我要創建兩個矩陣。一個是提供任何一天的最低溫度的變量,即 minTemp,另一個是指示是否應該啟動造雪機的變量,即 Machine。它們都將以一定數量的行、一列和缺失值開始。因此我們級聯分配函數。我使用 J 函數建立一個具有一定行數的矩陣,這裡是來自 tempC 的行數、我提到的單列以及缺失值。如果 Machine、minTemp 和任何其他變數都以相同的值開始,我們可以簡單地以這種級聯方式分配它們,就像您在第 3 行中看到的那樣,所以我將運行它,在日誌中,如果您將滑鼠懸停在 Machine 或 minTemp 上,您只會看到那一列缺失值。然後我想要循環,我從一個計數器開始,我測試 r 小於或等於存儲在 nr 中的數字,然後 for 循環的主體是我將有一個名為 obs 的變量,在本例中它將採用第一行和 tempC 中的所有列。我將在該行中找到最小值並將其放在 minTemp 中的第 r 位或第一位。然後,我將把剛剛放入 minTemp 的值與負號進行比較,如果比較結果為真,則如果值小於負號,我將得到一個布林值,並將其放入 Machine 中的第一個位置,如果比較結果為假,則如果它大於或等於負號,我將放入 Machine 中。然後我們更新,再次測試,現在 obs 將被資料表中的下一行覆蓋。我們將執行相同的步驟,直到填滿 minTemp 和 Machine。因此我將運行幾行,然後我們可以將滑鼠懸停在 minTemp 上。它再次出現在懸停幫助中,也出現在腳本輸入視窗的底部,您可以在下面看到。我可以將滑鼠懸停在機器上,然後就有了這些,現在最後幾個步驟我們可以級聯這些訊息,但為了演示目的,我們將把它們分開。所以我要向 dt 發送一條新的列訊息。它將被稱為 minTemp,並且其值將只是我剛剛從那個 for 循環中獲得的值。所以我要運行這些行,你可以在後台看到新列已經建立。例如,我可以為新列新增格式參數,以具有固定的小數位數。如果我打算再次使用該列,這也傳回了一個列物件引用,我可以將其儲存在變數中。然後下一段程式碼是將新列的訊息設定為 dt。這個叫做 Make Snow。這些值來自機器列向量,它具有和,這裡我的腳本將請求我們使用值標籤,如果資料值有,則標籤為否,如果資料值有,則標籤為是。然後我們當然使用布林值來開啟使用值標籤的選項。因此我將再次運行這些行,我們正在建立一個列物件的實例。我想導航回表格並滾動過去。因此,現在我們在列中顯示的是“否”和“是”。在列面板中,如果我向下捲動,您仍然可以看到 Make Snow 是連續的,這意味著它是實際資料值的數字資料。當我使用值標籤時,還有另一件事 - 列面板中的星號也表示有一個屬性,如果你點擊它,你就會看到這個 - 當我使用值標籤時,如果我將滑鼠懸停在數據表中的一個單元格上,它會顯示實際的數據值。但是如果我現在要製作圖表或進行任何類型的分析,只要打開這些標籤,它就會使用這些標籤。然後回到腳本中,我們可以再次將這些訊息級聯到資料表,但出於演示目的,我們將按照以下步驟執行。我將選擇發送到資料表,然後查找 Make Snow 列中的值等於的行,因此我將運行行,您可以在後台看到已選擇的四行。最後我將 subsect 命令傳送到資料表。我提供輸出表名稱並指定列。而且因為我已經選擇了四行,所以我不必說出我想要哪些行。這些將會自動拉入子集表。所以我會運行這些行,現在我們有了子集表。此時,我們可以選擇格式化最低溫度資料。來源腳本反映了子集。讓我們快速看一下,如果我右鍵單擊來源並選擇編輯。任何時候我使用表格選單中的命令建立新腳本時,無論是互動方式還是使用腳本,我都會獲得來源腳本。因此它只是表明子集是所使用的表命令。使用子集時需要注意的是,它不知道為什麼這些行被拉出,所以它會對這些行進行硬編碼。 JMP 編寫的腳本中沒有該選擇的基礎。並且 JMP 也透過將 a 作為選定行的參數來覆寫僅拉出選定行的預設傾向。因此,如果您想捕獲腳本並將其改編為您正在編寫的另一個腳本,則需要擺脫我所顯示的兩行,並在發送子集訊息之前,根據腳本的要求進行任何邏輯選擇。所以我將取消該腳本。因此,這是一個使用表格選單中的命令的範例,但也再次將資料作為矩陣進行處理。