數據步是SAS系統用來對外部數據文件或其餘數據庫中的表數據或已經生成的數據集進行處理的過程,其目的是生成SAS能識別的數據。數據步處理完成後,生成的數據存儲到邏輯庫對應目錄中,SAS其餘模塊或過程步調用數據步生成的數據,進行數據分析。不管是SAS/EM(數據挖掘模塊)仍是SAS/EG(報表開發模塊)等,都是以數據爲基礎的。 java
SAS系統有兩大步,稱爲數據步和過程步。所謂數據步就是一個動態處理數據的過程,處理數據的目的是生成SAS系統能識別的數據集,數據集默認擴展名爲「.sas7dbat」。 數據庫
數據步以「DATA」關鍵字爲開始的標誌,以「RUN」語句爲結束標誌,每一個語句的結束符號爲「;」。數據步能夠一次建立多個數據集,數據集名之間以空格分隔。 code
下面介紹一個例子: ci
已知外部文件存儲在「d:\test\xy.dat」的目錄下,此數據集爲人口普查數據集,請將此數據文件中北京和上海兩個城市的數據放到一塊兒,生成數據集名爲bjsh,其餘城市的人口數據信息生成數據集名爲qita,數據集保存到「d:\test」目錄下。 開發
程序以下: input
LIBNAME xyy 'd:\test'; /*定義數據集存儲物理路徑的邏輯庫*/ %let lj= 'd:\test\xy.dat'; /*外部數據文件的路徑*/ Filename fil "(&lj)"; /*此語句指定定義邏輯文件名*/ DATA xyy.bjsh xyy.qita; /*同時創建兩個數據集,分別是bjsh和qita*/ infile fil; /*讀入外部文件*/ input id $ popucount city $; if city in ('北京','上海') then output xyy.bjsh; /*if語句條件判斷,output語句後面爲輸出到數據集名*/ /*把北京和上海兩大城市的人口數據存儲到數據集bjsh*/ else output xyy.qita; /*把其餘城市人口數據存儲到數據集qita*/ RUN; /*數據步結束*/ PROC print data=xyy.bjsh; /*打印數據集bjsh*/ RUN; 輸出窗口顯示此數據集只有北京和上海兩個城市人口信息結果: Obs id popucount city 1 001 1800000 北京 2 002 1700000 上海 程序解讀: 數據步經過if條件語句判斷city變量,把in('北京','上海')語句符合條件的數據經過OUTPUT語句輸出到數據集xyy.bjsh,不符合條件的輸出到數據集xyy.qita。程序運行完成後,兩個數據集生成到制定目錄,爲便於驗證是否數據生成到對應數據集,執行打印輸出程序,,將北京和上海兩個城市的數據打印輸出到窗口。