1,變量名命名規范:以字母或者下划線開始,可包含字母、下划線、數字,且不超過32個字符;
2,INFILE用於讀取外部數據文件,一般於FILENAME(和LIBNAME用戶一致,但路徑要精確到文件名(、、.TXT/DAT等))連用。
3,INPUT語句用於定義字段變量,可用於讀去外部文件(INFILE)、CARDS、DATALINES。
4,變量類型轉換規則:①賦值:以賦值目標的變量類型而定自動轉化;②做運算→數值型;③做字符連接→字符型;④經過了字符處理函數→字符型;
5,字符和數值型變量在數據集中的顯示:①字符型→右對齊→缺失為空格;②數值性→左對齊→缺失為“.”;
6,在DATA步中一般情況下出現的字符都會默認為一個變量,若想寫字符型常量則要用“”、‘’括起來。(若字符常量本身還有“”則用‘’括起來,相反則用“”括起來。)
7,日期型常量包括:日期(DATE)、時間(TIME)、日期時間(DATETIME)3種。這三個類型的常量必須用引號括起來並且后面加常量對應的字母D、T、DT,表示日期、時間、日期時間。
8,注意:十六進制數常量必須用單引號括起來,后面加字符X。
9,篩選語句IF和WHERE,WHERE是在編譯階段執行,即程序執行之前就先篩選,大大提高程序效率。IF語句在執行階段執行,可用於新建變量的篩選。(一般情況下能用WHERE則用WHERE,缺點是:WHERE語句對變量類型的兼容性較低,嚴格控制“=”兩邊的數據類型相同,若多個WHERE語句出現只認最后一個WHERE語句),驗證程序如下:
DATA A; INPUT ID X $; CARDS; 1 R 2 T 4 O 5 P ; RUN; PROC PRINT DATA=A; WHERE ID=1; WHERE X="P"; VAR ID X; RUN;
輸出結果為:
SAS 系統 |
Obs | ID | X |
---|---|---|
4 | 5 | P |
DATA A;
INPUT ID X $ @@;
CARDS;
1 R 2 T
4 O 5 P
;
RUN;
DATA A;
INPUT ID X $ @@;
CARDS;
1 R
2 T
4 O
5 P
;
RUN;
以上兩段代碼輸出的結果一樣都是四條觀測;
obs:表示需要處理的最后一行observation,如果指定其為max,就表示處理到最后一條observation
firstobs:表示需要從第幾行observation開始處理,默認是1observation
msglevel:默認值是N,僅打印notes,warnings和error信息,如果設為I,則除了打印N選項的信息,同時打印附屬信息,包括索引的使用,合並處理,排序等附加信息
errors:指定最多有多少錯誤可以在log中顯示(也可以寫成error=num,編譯時按errors處理)
macrogen:將宏擴展的結果顯示在log里
compress:是否采用壓縮格式存儲數據集
missing:指定用於替換missing value的字符,默認是(.)
ps(pagesize):輸出時每頁行數
ls(linesize):輸出時每行字數
center/nocenter:指定輸出是否中間對齊
date/nodate:指定輸出是否包含日期
replace/noreplace:如果dataset已經存在,指定是否覆蓋
print/noprint:指定是否在output窗口輸出
date:輸出頁碼顯示日期 nodate:輸出頁碼不顯示日期
center:輸出頁居中 nocenter:輸出頁不居中
number:有頁碼 nonumber:無頁碼
mprint 打印宏的每一次執行過程在日志中 nomprint 不打印、、