SAS自學系列--SAS語句的語法


        SAS是現今非常流行的數據分析和數據挖掘軟件,想從事數據分析行業,掌握SAS很有必要。雖然SAS本身提供了豐富的人機交互界面,通過手動調用各個Menu能方便地完成數據統計分析的任務,但是,通過代碼來調用各個功能模塊無疑能為工作帶來巨大的靈活性,並顯著提高效率。

    本文主要是根據網上找到的一個電子文檔《SAS語句簡介》(可能是某本書的其中一章)以及朱世武老師的《SAS編程技術教程》整理而成。

    SAS 程序通常分為數據步和過程步,一段SAS 程序根據目的和需要可以有0到多個數據步(Data)和0到多個過程步(Proc),還可以有系統選項語句、ODS語句等全局語句。

        1.數據步(Data Step)

        以關鍵詞Data 開頭,可由多條語句構成,結束標志可以是空語句、Run 語句、過程步或下一步數據步。

          數據步功能有:

    (1)從外部文件中讀取數據;

    (2)將數據寫入到外部文件中;

    (3)讀取SAS數據文件和視圖;

    (4)創建SAS數據文件和視圖。

    2.過程步(Proc Step)

    以關鍵詞Proc 開頭,可由多條語句構成,結束標志是Run或Quit 語句。過程步的功能有:

    (1)調用 SAS 過程(SAS Procedures)分析和處理SAS數據集形式的數據,或執行其他分析;

    (2)將分析結果以報表、圖表的形式輸出,或輸出成 SAS數據集、外部文件;

    (3)生成SQL查詢;

    (4)數據操作和管理。

    下面是一段代碼示例,通過注釋可以看出怎樣寫SAS語句。

1 /****************************\

2 | 10名學齡兒童的身高體重資料 |

3 \****************************/            /*這三行都是注釋,SAS中的注釋跟C語言一樣,是用/*和*/來包括的*/

4 OPTIONS nodate number=0;                    /*系統選項語句,nodate參數指定不在結果標題中顯示時間,number=0也可以寫成nonumber,指定不在標題中顯示頁數*/

5 DATA SASTJFX48_1;                                   /*數據步,以Data開始,SASTJFX48_1是用戶自定義的SAS數據集的名字*/

6   INPUT name $ height weight @@;        /*INPUT創建變量、讀取數據值、給變量賦值的語句,name,height,weight是用戶自定義變量,$表示name是字符變量,*/

                                                                           /*@@是讀取數據值的指針控制符號,指定在同一個數據行可以讀取2個以上的觀測數據*/

7   BMI=weight/(height/100)**2;              

8 LABLE BMI=‘body mass index’;           /*通過“LABEL”語句設置變量BMI 的標簽為“body mass index”*/

9 DATALINES;                                                  /*指DATALINES單獨占一行,指定其后為數據行*/
10 WangHB 149.4 30.8 WuCJ 167.6 46.6    /*此處開始為數據行*/
11 ChenF 146.3 33.1 GaoSY 170.7 44.0        
12 ZhanZL 161.5 36.3 LiYZ 164.6 40.8
13 ShenJJ 155.5 36.7 ZhaoJH 158.5 35.4
14 ZhangHX 149.4 33.1 WangXS 156.4 31.8
15 ;
16 RUN;

17 ODS HTML;                                                  /*ODS為輸出語句,指定以HTML語句的格式輸出*/
18 PROC MEANS data=SASTJFX48_1;        /*PROC指示過程步的開始,后接過程名,MEANS為SAS過程名,’data’為數據集選項,*/

                                                                           /*指定過程步分析的數據集為SASTJFX48_1*/
19   VAR bmi;                                                    /*VAR后跟變量名,指定分析的變量*/
20   OUTPUT out=result mean=BMImean;   /*OUTPUT為將運行結果輸出,out后為用戶自定義的輸出數據集名,mean為結果中的均數名,=后面是用戶自定義的輸出名*/
21 RUN;
22 PROC PRINT data=result (keep=BMImean); /*調用PRINT過程在窗口顯示result數據集,keep=是數據集選項,指定保留的變量*/
23 FORMAT BMImean 4.1;               /*FORMAT規定變量的輸出格式,其后是變量名和輸出格式,4.1表示標准數值型數據輸出格式*/
24 RUN;

ODS HTML CLOSE;                            /*與17行的ODS成對出現的語句,指示關閉HTML格式的輸出*/

 

    3.SAS程序書寫規則

    SAS程序在書寫的時候要遵循如下幾點規則:

    (1)每條SAS語句以分號(;)結尾;

    (2)SAS語句可以從任何一行、任何一列開始,一行上可以寫多條SAS語句;
    (3)一條SAS語句可以寫在多行上,但不能把一個語法單位分開寫在不同的行上;
    (4)一般情況下,一條語句中不同的語法單位要用空格或換行符分隔,但是一些字符的前方或后方,可以不用空格分隔,SAS可以自動分析語句結構、識別語法單位;

    (5)SAS語句書寫不區分字母的大小寫,但在一些特殊場合除外。

    4.SAS的注釋

    下面的一幅圖片很好的解釋了SAS的注釋語句。

 

image

        5.SAS命名規則

    SAS要遵循如下的命名規則:

    (1)SAS 名以字母或下划線開頭,后續字符可以是字母、數字或下划線(同C語言);
    (2)SAS 名依據其使用的場合有一定長度限制,有的部位的SAS 名至多有32 個字節長度,有的部位的SAS 名至多有8 個字節長度;

    (3)SAS 名不區分大、小寫,例如BMI、Bmi、bmi 在SAS 名中都是一個詞;
    (4)SAS 名中不能出現空格,並且SAS 名中除了字母、數字、下划線外,不能含有其他特殊字符,如#、$、@、%等特殊字符不能出現在SAS 名中;
    (5)SAS 保留了一些自動變量名及變量列表、SAS 數據集名和邏輯庫引用名;

        6.SAS變量

    編程語言一般都離不開變量。變量相當於一個容器,用來保存一定結構的數據。SAS變量除了具備常規編程語言所具備的許多共性外,也有一些自己的特點,下面主要講述它特別的地方:

    (1)SAS中只有兩種數據類型--數值型和字符型。變量后加美元號表示該變量時字符型,美元號可以緊跟變量名后面,也可以空格。

    (2)變量默認長度為8個字節,通常一個普通英文字符占一個字節,一個漢字占兩個字節;用戶可以用Length,Attrib語句修改變量的長度。如果變量第一次出現在表達式左邊,則變量長度與表達式右邊的結果值的長度一致。

    (3)輸出格式:字符型變量默認輸出格式是“BEST16.”,數值型變量默認的輸出格式是“$w.”,可以用Format,Attrib語句或者Format過程定義或修改變量的輸出格式。

    (4)變量次序:指數據步創建或定義變量的次序。

    (5)索引類型:決定這個變量是否是數據集索引的一部分的屬性。這個屬性可以用Contents 過程的‘OUT=’選項進行定義和修改。

    7.SAS運算符

    8.SAS文件系統

    (1)邏輯庫

    邏輯庫名是SAS名,長度不能超過8B。建立SAS邏輯庫的語句:

    LIBNAME libref <engine> ‘SAS-data-library’

    語法說明:

    libref:邏輯庫名

    SAS-data-library:邏輯庫對應的物理地址

    engine:引擎名稱(缺失時是默認引擎)

    邏輯庫又分為臨時庫和永久庫:臨時邏輯庫指的是內容只在啟動SAS時存在,一旦退出SAS時內容完全被刪除。系統默認臨時邏輯庫是work,引用臨時庫work中的文件時,可以不加庫名。永久庫當然在SAS關閉后仍舊保留。

    (2)數據集

    SAS數據集分為兩類:SAS數據文件和SAS數據視圖。SAS數據文件同時描述信息和存儲數據值,SAS視圖並不實際存儲數據,它相當於一個查詢語句。

    (3)數據集選項

    數據集選項用在SAS數據集名稱后的括號中,多個選項之間用空格隔開。括號中的數據集選項的作用:
    重新命名變量;

    選擇需要的觀測;

    輸出數據集中保留或刪除的變量;

    數據集加密。

    語法格式:

    Data-set-name(Data-set-options)

    (option-1=value-1<…option-n=value-n>)

例子:
    data scores(keep=team game1 game2 game3);

    /*scores中保留team, game1, game2, game3四個變量*/

    proc print data= new(drop=year);   /*去掉變量year*/

    set old(rename=(date=Start_Date)); /*將date改名*/

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM