本篇主要介紹Summary Functions在SQL中的使用。
Summary Functions可以用來計算所有資料筆的函數,類似Proc Means的功能,但依據寫法也可能會如一般函數的結果。
常用的Summary Functions有Mean、Count、Max、Min等,其餘函數表列於下:
建立資料檔:
慣例,請先建立一個資料檔。
data score1;
input id score class $ @@;
datalines;
1 80 A
2 90 A
3 75 A
4 67 A
5 77 B
6 91 B
7 67 B
;
run;
Summary Functions(1):
依據Summary Functions在select語法中所放入的狀況,可分為「只有Summary Functions的指令」及「包含其他非Summary Functions的指令」,有點難理解的兩句話,先來看「只有Summary Functions的變項」的結果。
【程式1】 proc sql; | proc sql; |
不論是【程式1】左欄或右欄的程式,在select之後均只有放入包含Summary Functions的指令,因此結果依據score1資料檔中的7筆資料進行計算,得到平均分數為78.1分,最小的為67分。
接下來看「包含其他非Summary Functions的指令」的結果,於【程式2】
【程式2】 proc sql; | proc means data=score1 noprint ; data test1; |
【程式2】左欄加入了三個非Summary Functions的指令,分別為id, score,class,SQL如實將三個變項的結果列出,而後面兩個Summary Functions的指令則帶入全體的計算後的結果,也就是【程式1】的結果。如果要用傳統Data Step完成同樣工作所需要的語法則在【程式2】右欄。
Summary Functions(2):
Summary Functions和一般函數(Base SAS Functions)寫法相同,例如mean、min、max等,因此在撰寫程式時容易讓分析師困擾。例如在Summary Functions後是用多個參數時,結果會針對每觀察值數值作運算,也就是Summary Functions會和一般函數運算方式一樣。
【程式3】
proc sql; | proc sql; |
【程式3】左欄,mean函數中使用了兩個參數,得到結果不是7筆資料的平均,而是各觀察值的結果(以第1筆為例,計算過成為(80+(80+10))/2=85)。【程式3】左欄,mean函數外面在使用另一個mean函數,結果又回到7筆資料的平均,當然這不是原始資料的平均,而是mean(score, score+10) 後的平均值。
這次簡單介紹了Summary Functions,後續將持續介紹PROC SQL的重要指令,包括group by、order by、having等。
系列文章:
請問什麼時候會有partD~~~
回覆刪除好問題,不過C部分的瀏覽量明顯低於A或B,想說D就應該不需要了。
刪除好啦,重點是不知道要寫什麼QQ
我來衝流量XD
刪除這對我幫助超大的,希望能有D部分。
正在跑健保資料庫的人留
感謝支持啊,但D要寫什麼(抱頭思考一下)
刪除希望可以出D呀~
刪除寫吧寫吧 支持你喔!
回覆刪除data step是個隱含式迴圈,那請問proc SQL運作方式有差別嗎?
回覆刪除data step在pdv運作模式下,是逐筆的概念沒錯。
刪除SQL的處理方式我就沒有那麼清楚了,但也因為運作模式不同,在需多狀況下SQL會非常的有效率,這需要在個不同情境實用後,才可以知道差異。
新朋友+1XD,支持
回覆刪除感謝您的支持,也是有緣,因為C部分的已經沒什麼瀏覽量了。
刪除希望能有D的部分~~拜託
回覆刪除感謝您的支持,我在想想有什麼好發揮的好了
刪除非常謝謝版主的教學!希望之後還能看到PROC SQL其他的重要指令
回覆刪除