
一.使用PRINT過程步
1.PRINT過程步的基本使用
前面我們已經提到過利用PRINT過程步檢查我們建立的SAS數據集的內容,實際上就是用PRINT過程步顯示SAS數據集的內容。PRINT過程步由一個PROC PRINT語句開始,其一般形式為:
PROC PRINT options;
選項包括DATA=選項,它指定你使用的數據集,如果不使用該選項的話,系統使用最近用到的數據集。另外,在用PRINT過程步顯示SAS數據集的內容之前,或者說,在一個程序的開頭,往往需要用LIBNAME語句指定SAS數據庫。例如:
libname clinic'c:\clinic';
proc printdata=clinic.admit;
run;
提交這段程序以后,SAS系統就會在OUTPUT窗口中顯示該數據集的內容,我們把它稱為報表(report)。例如:
ID |
NAME |
SEX |
AGE |
HEIGHT |
WEIGHT |
FEE |
2458 |
Murray, W |
M |
27 |
72 |
168 |
85.20 |
2462 |
Almers, C |
F |
34 |
66 |
152 |
124.80 |
2501 |
Bonaventure, T |
F |
31 |
61 |
123 |
149.75 |
2.控制產生的報表
在缺省情況下,PRINT過程步產生的報表會顯示:
A.數據集中所有的觀測和變量
B.在最左邊一列顯示觀測號
C.變量根據它們在數據集中的順序排列
為了得到你想要的報表,你可以對產生報表的過程進行控制,你可以:
A.利用系統選項控制報表的樣式
B.選擇顯示變量和觀測
C.對數據進行排序
D.加題注和尾注
E.顯示描述性的變量標記
F.對數據規定格式
下面我們一一介紹如何進行控制。
3.設定系統選項
在你用PRINT過程步產生報表之前,你可以先設定一些系統選項控制報表的樣式,包括:
選項 |
功能 |
LINESIZE= |
設定每行的長度 |
PAGESIZE= |
設定每頁的行數 |
NUMBER|NONUMBER |
設定是否顯示頁碼 |
PAGENO= |
設定開始頁碼 |
DATE|NODATE |
設定是否顯示日期和時間 |
每一個系統選項都有缺省設置,例如,在缺省情況下,會自動顯示頁碼。
你可以用以下任一方法改變這些系統選項:
1)用OPTIONS語句
一般形式為: OPTIONS options;
例如: options pagesize=20linesize=76;
options numberpageno=1;
OPTIONS語句可以出現在SAS程序的任意地方,從語句被執行的地方開始,設定的系統選項起作用,一直到你改變它的設置。
例如: options nonumber nodate;
proc printdata=sales.qtr3;
proc printdata=sales.qtr4;
options date;
run;
則在顯示SALES.QTR3的時候頁碼和日期時間均不顯示,而在顯示SALES.QTR4的時候頁碼不顯示但日期時間顯示。注意,SAS系統要遇到DATA、PROC或RUN等關鍵詞的時候才執行會執行前面一個程序步,因此,OPTIONS語句要遇到其后的這些關鍵詞時才會被執行,但它會在其所屬的程序步中優先執行。
2)用OPTIONS窗口
另一個改變系統選項的簡單方法是進入OPTIONS窗口:
選擇: Globals à Options àGlobal Options
找到想要設定的選項,作相應的改變即可。
4.NOOBS選項
你可以在PROC PRINT語句中使用NOOBS選項去掉報表中的觀測號列。例如:
proc printdata=sales.qtr4 noobs;
run;
事實上,PROC PRINT語句中可以使用的選項很多,詳細情況可利用HELP窗口查找:
Help à SAS System àREPORT WRITING àPRINT
5.選擇變量
如果你的數據集中有很多變量,而你只希望顯示其中的一部分,你可以在PRINT過程步中用VAR語句指定要顯示的變量。其一般形式為:
VAR variables;
例如: var age height weight fee;
輸出報表中的變量按照在VAR語句中出現的順序排列。
注意,變量之間用空格分開。
6.選擇觀測
如果你只需要顯示數據集中的某一部分觀測,而不是所有的觀測,你可以在PRINT過程步中用WHERE語句設定要顯示的觀測應滿足的條件。
1)WHERE語句的一般形式為:
WHEREwhere-expression;
條件表達式的寫法同第三章中所述相類似。例如:
whereweight<175;
where name='Almers,C';
注意,對字符型變量,條件表達式中的數據值用單引號括起,并且區分大小寫。
2)復合條件
你也可以在多個條件的基礎上選擇你要顯示的觀測,這時候你可以在條件表達式中用AND(&)和OR(|)算符,例如:
where age<=55and weight >160; whereage<=55 & weight >160;
where fee=124.80 orfee=178.20; where fee=124.80 |fee=178.20;
3)IN算符
如果對同一個變量用多個值進行條件檢驗的話,可在條件表達式中用IN算符,例如:
where fee in(124.80,178.20);
4)多重復合條件
當你在條件表達式中用到一個以上AND(&)和OR(|)算符時,應該用括號來決定那些條件先復合,再與其它條件復合,例如:
where (age<=55and weight >160) or height >70;
where age<=55and (weight >160 or height >70);
顯然是兩個不同的條件。如果不加括號,則照前兩個先復合的方法進行。
7.對數字型變量求和
你可以利用SUM語句對數字型變量求和,在輸出的報表中,該變量所在列的最下方顯示這一列數值的和。SUM語句的一般形式為:
SUM variables;
例如: proc print data=vcrsales;
varsalesrep region;
sumunitcost unit sold;
run;
在SUM語句中出現的變量名不需要在VAR語句中指定,也會在輸出報表中顯示。
8.對數據進行排序
如果你希望在報表中的觀測是按照指定的順序排列的話,就應當在利用PRINT過程步創建報表之前,用SORT過程步對數據進行排序。一個簡單的SORT過程步的一般形式為:
PROC SORTDATA=SAS-data-set OUT=SAS-data-set;
BY variables;
RUN;
過程步以PROC SORT語句開始,其中,DATA=選項指明要讀的數據集,BY語句是SORT過程步所必需的,它指明要按照哪個(那些)變量的值來進行排序。
OUT=選項指定一個輸出數據集,在這個數據集中,所有的觀測按指定的順序排列。注意,如果不使用OUT=選項的話,在DATA=選項中指明的數據集就會被永久性地改變,而如果你只是希望它臨時改變的話,就必須用OUT=選項指定一個臨時的輸出數據集。
9.題注(Titles)和尾注(Footnotes)
在SAS報表中,可以出現題注和尾注,題注出現在每一頁的頂部,尾注出現在每一頁的底部,如果沒有定義,缺省的題注是‘The SAS System’,尾注不定義就不出現。
1)顯示題注(Titles)
你可以改變輸出報表中的題注,方法有:
A.用TITLES窗口
選擇Globals à OptionsàTitles
進入TITLES窗口,在相應位置輸入你希望作為題注的文字,
選擇Edit à End
退出即可。
SAS系統允許有10個題注。
B.用TITLE語句
在產生報表的過程步中或之前用TITLE語句設定題注,其一般形式為:
TITLEn 'titletext';
例如: title1 'July Report';
title3 'group1';
用TITLE語句同樣可以設定10個題注。
2)顯示尾注(Footnotes)
你還可以改變輸出報表中的尾注,方法與改變題注的方法相似:
A.用FOOTNOTES窗口
選擇Globals à OptionsàFootnotes
進入FOOTNOTES窗口,在相應位置輸入你希望作為尾注的文字,
選擇Edit à End
退出即可。
SAS系統允許有10個尾注。
B.用FOOTNOOT語句
在產生報表的過程步中或之前用FOOTNOTE語句設定尾注,其一般形式為:
FOOTNOTEn 'footnotetext';
例如: footnote1 'PrepareedJuly 15';
footnote3 'byfinancial department';
用FOOTNOTE語句同樣可以設定10個尾注。
3)改變題注和尾注的設定
題注和尾注的設定都是全局性的,設定以后,它們的作用一直延續到你重新設定或退出SAS系統。在設定了題注和尾注之后,你如果希望改變或取消這些設定的話,可用以下方法:
A.用TITLES 或FOOTNOTES窗口
進入TITLES 或FOOTNOTES窗口,改變或取消其中的設置。
B.用TITLE 或FOOTNOTE語句
用新的TITLE 或FOOTNOTE語句重新設定題注或尾注,新的設定會取代老的設定。
注意,新的TITLE 或FOOTNOTE語句被執行是,除了取代原先同樣號碼的題注或尾注之外,還會取消更大號碼的題注或尾注。
用下列不加號碼或不加文字的語句可取消所有的題注或尾注:
title1;
footnote;
10. 給變量設定描述性標記
如果某些變量名不足以表達該變量數據的性質,你希望在報表中以更準確的詞句來作為這些列的標記的話,可以在過程步中使用LABEL語句,其一般形式為:
LABEL variable1='label'
Variable2='label';
標記可長達40個字符,并且,必須用引號括起。
你可以用一個LABEL語句,也可以用多個LABEL語句來設定描述性標記。
另外,為了顯示標記,在PROC PRINT語句中必須使用LABEL選項。例如:
proc printdata=clinic.therapy label;
var month wjr;
labelwjr='Walk/Jog/Run';
run;
11. 設定輸出數據的格式
你可以利用FORMAT語句設定變量的輸出格式,以使報表看上去更完美。FORMAT語句的一般形式為:
FORMAT variableformat-name;
例如: format net comma5.0 grosscomma8.2;
format netcommiss dollar9.2;
在某一個過程步中的FORMAT語句設定的輸出數據的格式,僅在同一個過程步產生的報表中起作用。
SAS系統提供許多輸出格式,可用于在FORMAT語句中使用。你可以在SAS的HELP穿口中找到所有 的SAS輸出格式,方法為:
Help à SAS System à SASLANGUAGE à SASFormats and Infortmats
下面是部分常用格式:
格式 |
例 |
顯示結果 |
COMMAw.d |
Comma8.2 |
1,123.20 |
DOLLARw.d |
Dollar6.2 |
$56.00 |
MMDDYYw. |
Mmddyy6. |
150599 |
w.d |
8.2 |
12203.90 |
12. 自定義輸出格式
在SAS系統中,用戶還可以用FORMAT過程自己定義輸出格式,其一般形式為:
PROC FORMAT;
VALUEformat-name range1='label'
range2='label';
例如: proc format;
value$destfmt 'LON'='London'
'PAR'='Paris'
'HON'='Hongkong';
run;
然后在PRINT過程中的FORMAT語句中就可以自定義的輸出格式了,例如:
(接上例) proc print data=summer;
vardate dest;
formatdata date7. Dest $destfmt;
run;
二.使用TABULATE過程步
使用PRINT過程步你可以以列表的形式顯示數據集的內容,但有時候你可能更希望以表格的形式對數據集中的內容進行分析,這時候,就可以利用TABULATE過程步來幫助你進行這項工作。
1.用TABULATE過程步創建表格
事實上,TABULATE過程步并不是簡單地顯示數據集的內容,而是對數據集中的內容進行歸納統計以后,根據用戶的要求,制作各式表格供用戶分析使用。
TABULATE過程步能幫助你方便地設計你的報表,你可以自由決定表格的形式和結構,作出的表格可以是一維的、二維的或三維的。同時,TABULATE過程步能對數據集中的數據進行歸納統計,在表格中顯示一些描述性統計量,例如:
A.SUM(和)
B.MEAN(均值)
C.MINIMUM(最小值)
D.MAXIMUM(最大值)
F.VARIANCE(方差)
等等。
你也可以在TABULATE過程步中進行選擇觀測、設定描述性標記、設定題注和尾注、給數據規定輸出格式等操作。
2.設計表格
使用TABULATE過程步的關鍵是計劃,與PRINT過程步不同,TABULATE過程步不會產生缺省的報表,你必須告訴它如何創建表格,因此,在使用TABULATE過程步之前,最好先畫一個草表,以明確你自己到底想要得到一個什么樣的表格。具體說,你需要決定:
A.使用什么數據
B.用什么變量對數據分類
C.對什么變量進行分析
D.表格的形式
3.基本的TABULATE過程步
一個簡單的TABULATE過程步包含以下四條基本語句:
語句 |
功能 |
PROC TABULATE |
啟動過程步,設定數據集 |
CLASS |
設定分類變量 |
VAR |
設定分析變量 |
TABLE |
描述產生的表格 |
其中,PROC TABULATE語句作為TABULATE過程步的開頭,是必須要有的,其一般形式為:
PROC TABULATEoptions;
例如: proc tabulatedata=clinic.admit;
其中,DATA=選項決定使用什么數據集。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25