SAS PROC TABULATE學習筆記01

2021-10-08 07:20:51 字數 2784 閱讀 8935

sas中的proc tabulate功能比較強大,使用好了能節約不少時間而且不易出錯。

一句話:a procedure that displays descriptive statistics in tabular format。其中descriptive statistics可以理解為描述統計學,描述統計學就是這樣乙個工具,它對極其龐雜的資料進行描述、概括或刪減,使其變成能為人理解的東西。 

詳細學習tabulate之前,先看乙個簡單的例子,表1是sas自帶的邏輯庫sashelp中的乙個資料集class,它包含了所有學生的性別、年齡、身高和體重資料:

現在的需求是:

按照性別分類、統計物件是年齡和身高、統計專案包括樣本數量、最大值、最小值和平均值,使用的程式如下:

proc tabulate data=sashelp.class ;

class ***;

var age height;

table (age height)*(n max min mean), ***;

run;

執行結果如表2所示:

當然,可以將table語句中的行列互換,修改為" table ***, (age height)*(n max min mean);" 執行結果如表3所示:

在介紹tabulate之前,先介紹幾個基本概念

表緯度有3個,分別是page、row和column,意思分別是頁、行和列,如圖2所示:

分類/種類,它是指tabulate語法中class變數不同值的組合。比如上面的例子中class指定的是***,即按性別進行分類,那麼category有男和女這兩種。

如果class指定的是age,那麼那麼category有11、12、13、14、15、16這6個值。

如果class指定的是*** age,那麼category就有2*6=12個值,分別如下

"男 11", 

"男 12", 

"男 13", 

"男 14",

"男 15", 

"男 16",

"女 11",

"女 12",

"女 13",

"女 14",

"女 15",

"女 16",

比如將上面的例子的要求改一下,要求按照姓別和年齡統計分類,統計每種分類的學生數量

proc tabulate data=sashelp.class ;

class *** age;

table ****age, n;

run;

輸出結果如表4所示:

完整的tabulate語法如圖3所示:

這裡先說幾個最重要的

class後跟分類變數(英文class variables),即按哪些變數做分類,這些變數決定了有多少個category。第1個例子中是姓別,它有兩個category。

var 後跟分析變數(英文analysis variables),即要統計分析哪些變數,第1個例子中,是年齡和身高。

table描述了要建立表的表結構,它有3個引數,分別描述page,row和column,引數間以逗號隔開,只有column是必選的引數。

如果有3個引數,那麼3個引數分別表示頁、行和列,輸出表是3維表。

如果有2個引數,那麼2個引數分別表示行和列,輸出是2維表。

如果有1個引數,那麼這個引數表示列。

注意:1. 出現在table 語句裡的變數,之前必須在class或者var語句裡出現過

2. 如果要建立多張表,可以使用多個table語句

table最多支援3維表,每個維度是由緯度表示式( dimension expressions)組成,而dimension expression又由element和operator組成

element可以是 analysis variables、class variables、all、statistics關鍵字、format modifiers、labels等組成;

operator可以是星號*、空白、括號、尖括號;

第乙個例子中的row expression如下:

(age height)*(n max min mean)

我畫了一張簡單的圖,如圖4所示,基本關係就是 tabulate主要有class、var和table語句, table語句由3個緯度表示式組成,每個緯度表示式由element和operator組成。

C PRIMER PLUS 學習筆記(0)

總之,從今天開始,我就算正式學習程式設計了。寫部落格主要還是彌補我差的可怕的記憶力,把自己的一些在看書時的想法記下來。哼,老子坐等腦機介面成熟的那一天,我看誰還背書 說實話,學了c 我才發現,我是所有語言都不想學,好在程式語言看上去結構比英語簡單點。本人懶的一批,之前的不想記,就從書的4.4開始吧。...

8086彙編學習筆記 0

mov ax,bx 將bx中的內容送到ax中 movax,ds address 將ds address所指向的資料送入ax中 乙個字,即兩個位元組。如果只要傳輸乙個位元組可以使用暫存器的高八位 ah 或者底八位 al 進行 movds address ax 將ax中的資料 乙個字單位 送出ds ad...

0 keras學習筆記

目前深度學習應用範圍很廣,為了更快捷的學習使用深度學習的成果,目前正準備學習一下深度學習框架keras 該框架keras是基於theano tensorflow實現的乙個框架,由於theano tensorflow使用較為麻煩,keras將其進行了封裝,便於使用。此外,最主要的一點是,研究科研期間做...