Leo Yeh's Blog

SAS 基礎程式 (10)

教學目標

初步了解 SAS 基礎程式如何進行變數類型自動轉換或手動轉換。

重點概念

(請注意以下內容皆為課程心得筆記,若有不清楚的部份,建議上官方主辦的 SAS Programming 2 課程,謝謝。)

一般來說,研究人員針對收集的數據資料進行統計分析時,會遇到許多問題,針對遺漏值可以透過統計運算和數值計算相關函數解決此問題之外,在 SAS 中針對不同型態的變數會進行自動轉換,至於資料集中哪些變數是什麼類型,我們主要可以透過 SAS 程式 PROC CONTENTS DATA=資料集名稱; RUN; 在結果檢視器中按字母排序的變數與屬性清單中查看變數類型。

首先型態轉換主要可以分為自動轉換和手動轉換,簡單來說,若是要轉換為數值變數,則會使用 INPUT 函數,反之若是要轉換為文字變數,則會使用 PUT 函數,請注意若我們在 SAS 使用文字加上數字將會自動將文字轉換為數字,這部份與其它程式語言不同,例如:若敘述為 X=”123” + 456 ; 則 X 的結果為 579 。

接著針對數值自動轉換主要會發生在指定數值變數、四則運算、邏輯運算、使用函數時,請注意在 WHERE 敘述不具備有自動轉換的功能,自動轉換預設 w. 的輸入格式,所以當轉換失敗時,就會變成遺漏值。其中主要使用 INPUT 函數,其格式為 INPUT(來源文字,輸入格式)。

再來針對文字自動轉換主要會發生在指定文字變數,使用 || 和 !! 連接符號進行連接處理時,但要注意數字轉文字會有前面空白的問題發生,至於當發生自動轉換時 CAT 會自動移除前面空白,因此我們可以透過 CAT 函數避免數值轉文字前產生空白的問題,此外還需要特別注意數值轉文字其預設長度為 8。其中主要使用 PUT 函數,其格式為 PUT(文字,輸出格式)。

總結 INPUT 函數主要是轉換為數字,PUT 函數主要是轉換為文字,此外請注意因為變數格式在編譯期間就決定類型格式,所以無法在執行期間改變格式,因此若要改變變數格式,則需要透過 RENAME 選項將原始變數名稱重新命名之後,再重新指定原先的變數名稱,最後再刪除重新命名變數名稱,請注意 INPUT/PUT 敘述和 INPUT/PUT 函數用途不一樣,敘述主要是讀取或寫入資料,而函數則是轉換數值或文字資料。

相關資源

⬅️ Go back