统计软件SAS入门教程:SAS程序初步
本文鏈接:http://www.itongji.cn/article/0I12292011.html
很好的一篇文章,特適合入門(mén)者。
從本質(zhì)上講,SAS是一種完善的第四代計(jì)算機(jī)語(yǔ)言。因此要真正掌握它,我們?nèi)匀灰獟侀_(kāi)其華麗的外表,從學(xué)習(xí)它的核心――SAS程序開(kāi)始。
現(xiàn)在,讓我們將SAS看成一個(gè)計(jì)算能力極強(qiáng)的統(tǒng)計(jì)學(xué)白癡(之所以這樣說(shuō),是因?yàn)樗?jì)算能力雖然極強(qiáng),卻只能幫你計(jì)算而不能提出自己的實(shí)驗(yàn)設(shè)計(jì)方案或研究方向來(lái)),而你有一個(gè)非常小的關(guān)于數(shù)據(jù)分析的問(wèn)題要請(qǐng)它幫忙。自然你要開(kāi)口提出請(qǐng)求,無(wú)論措辭是委婉動(dòng)聽(tīng)還是直截了當(dāng),你的大實(shí)話無(wú)非是“喂,老兄,我有這樣一些數(shù)據(jù),我想做這樣一種統(tǒng)計(jì)分析,您能幫我嗎?”。他迅速檢查您的要求,在認(rèn)為合情、合理并且合法后,就開(kāi)始進(jìn)行計(jì)算,并且在很短的時(shí)間內(nèi)給出計(jì)算結(jié)果。
好的,計(jì)算機(jī)語(yǔ)言就是我們和計(jì)算機(jī)對(duì)話時(shí)所用的語(yǔ)言。和以上人類(lèi)對(duì)話的例子相對(duì)照,“我有這樣一些數(shù)據(jù)”對(duì)應(yīng)SAS程序中的數(shù)據(jù)步;而“我想做這樣一些統(tǒng)計(jì)處理”對(duì)應(yīng)SAS程序中的程序步;最后的那一句哀求“您能幫我嗎”則對(duì)應(yīng)了Submit命令。在默認(rèn)情況下,運(yùn)行結(jié)果或者出錯(cuò)信息將自動(dòng)給出(當(dāng)然你也可以強(qiáng)制不讓它輸出)。此外,還有一些系統(tǒng)環(huán)境控制語(yǔ)句,如Libname、title等。SAS程序就是由一個(gè)或多個(gè)數(shù)據(jù)步和/或程序步加上一些亂七八糟的環(huán)境控制語(yǔ)句組成。在本章中,我們將首先學(xué)習(xí)SAS對(duì)數(shù)據(jù)的管理方式,然后會(huì)了解到什么是數(shù)據(jù)步和程序步,最后則介紹一下SAS語(yǔ)言中結(jié)構(gòu)化語(yǔ)句的語(yǔ)法。
§3.1 SAS系統(tǒng)對(duì)數(shù)據(jù)的管理
在SAS系統(tǒng)中只有SAS數(shù)據(jù)集才能被SAS過(guò)程直接調(diào)用,SAS數(shù)據(jù)集的結(jié)構(gòu)和DBF數(shù)據(jù)庫(kù)完全相同,因此無(wú)須多講。而SAS數(shù)據(jù)集存儲(chǔ)在被稱(chēng)為SAS數(shù)據(jù)庫(kù)的文件集中,在PC系統(tǒng)中,SAS數(shù)據(jù)庫(kù)與某一個(gè)文件夾相對(duì)應(yīng),我們要為每一個(gè)數(shù)據(jù)庫(kù)指定一個(gè)庫(kù)標(biāo)記(庫(kù)名)來(lái)識(shí)別該庫(kù),使用Libname命令可以指定庫(kù)標(biāo)記。它的一般格式如下:
Libname 庫(kù)標(biāo)記 ’文件夾位置’ 選項(xiàng);
例如要指定目錄“C:\USER”為庫(kù)標(biāo)記A,可以在視窗中提交如下語(yǔ)句:
libname a ’c:\user’;
數(shù)據(jù)庫(kù)可分為永久庫(kù)和臨時(shí)庫(kù)兩種。臨時(shí)庫(kù)只有1個(gè),名為WORK,它在每次啟動(dòng)SAS系統(tǒng)后自動(dòng)生成,關(guān)閉SAS時(shí)庫(kù)中的數(shù)據(jù)集被自動(dòng)刪除;永久庫(kù)可有多個(gè),用戶(hù)可以使用Libname語(yǔ)句指定永久庫(kù)的庫(kù)標(biāo)記,永久庫(kù)中的所有文件都將被保留。但庫(kù)標(biāo)記仍是臨時(shí)的,每次啟動(dòng)SAS系統(tǒng)后都要重新指定。不過(guò)為了方便用戶(hù),SAS在每次啟動(dòng)時(shí)都會(huì)自動(dòng)指定兩個(gè)庫(kù)標(biāo)記:
SASUSER:指明為永久庫(kù),即庫(kù)中的數(shù)據(jù)集被保存起來(lái),以便下次啟動(dòng)系統(tǒng)時(shí)使用。
WORK:指明為臨時(shí)庫(kù),對(duì)于開(kāi)發(fā)和檢查新程序非常有用,但每次SAS運(yùn)行結(jié)束后WORK庫(kù)中的所有文件將被刪除。在程序中引用該庫(kù)中的數(shù)據(jù)集可以省略庫(kù)標(biāo)記,即它被認(rèn)為是缺省的數(shù)據(jù)庫(kù)。
?SAS數(shù)據(jù)庫(kù)對(duì)應(yīng)文件夾,如SASUSER對(duì)應(yīng)c:\sas\sasuser,WORK對(duì)應(yīng)c:\sas\saswork, SAS數(shù)據(jù)集則對(duì)應(yīng)文件,每個(gè)數(shù)據(jù)集實(shí)際上是在硬盤(pán)的相應(yīng)文件夾內(nèi)產(chǎn)生一個(gè)文件名為數(shù)據(jù)集名,而擴(kuò)展名為.sd2的文件,因此如果你成功的建立了一個(gè)數(shù)據(jù)集,理論上你就可以反復(fù)使用它直到硬盤(pán)報(bào)廢。
每一個(gè)數(shù)據(jù)集都有一個(gè)兩級(jí)名,第一級(jí)是庫(kù)標(biāo)記,第二級(jí)是數(shù)據(jù)集名,中間用“.”隔開(kāi),在程序中通過(guò)指定兩級(jí)名來(lái)識(shí)別文件。文件兩級(jí)名的一般形式如下:
庫(kù)標(biāo)記.數(shù)據(jù)集名
如在a庫(kù)中的數(shù)據(jù)集abc可以這樣來(lái)引用:a.abc 。
§3.2 SAS程序的數(shù)據(jù)步
3.2.1 預(yù)備知識(shí)
SAS程序的語(yǔ)句從上一個(gè)語(yǔ)句結(jié)束處開(kāi)始,以一個(gè)分號(hào)結(jié)束,可占多行。
3.2.2 數(shù)據(jù)步
以DATA語(yǔ)句開(kāi)始,用于創(chuàng)建和處理數(shù)據(jù)集。其中最常用的語(yǔ)句有:
DATA語(yǔ)句 它的主要功能是:
標(biāo)志數(shù)據(jù)步的開(kāi)始。
命名將要?jiǎng)?chuàng)建的SAS數(shù)據(jù)集。
DATA語(yǔ)句的一般形式如下:
DATA 數(shù)據(jù)集名;
INFILE語(yǔ)句 用于從外部文件讀入數(shù)據(jù),必須出現(xiàn)在INPUT語(yǔ)句之前。它的主要功能是:
確定一個(gè)包含原始數(shù)據(jù)的外部文本文件。
INFILE語(yǔ)句的格式如下:
INFILE ’外部文件的所在位置及名稱(chēng)’ 選項(xiàng);
CARDS語(yǔ)句 用于直接輸入數(shù)據(jù),標(biāo)志著數(shù)據(jù)塊的開(kāi)始。格式如下:
CARDS;
數(shù)據(jù)塊
;
INPUT語(yǔ)句 用于向系統(tǒng)表明如何讀入每一條記錄。它的主要功能有:
讀入由語(yǔ)句指定的數(shù)據(jù)列。
為相應(yīng)的數(shù)據(jù)域定義變量名。
確定變量的讀入模式。
INPUT語(yǔ)句的格式如下:
INPUT 變量名 [變量類(lèi)型 起止列數(shù)]...;
方括號(hào)表示其中的內(nèi)容為可選,如果不輸入,系統(tǒng)會(huì)以默認(rèn)值代替。
3.2.3 數(shù)據(jù)的兩種輸入方式
上面我們學(xué)到了INFILE語(yǔ)句和CARDS語(yǔ)句,它們分別對(duì)應(yīng)了兩種數(shù)據(jù)輸入的方式:
【直接輸入方式】
實(shí)際上我們?cè)诘谝徽乱呀?jīng)用到了直接輸入方式,仍以那個(gè)程序?yàn)槔?#xff0c;其中的數(shù)據(jù)步如下:
data temp;
?命名將要建立的數(shù)據(jù)集為work.temp
input x y@@;
?要輸入的變量為x、y,并且連續(xù)輸入
cards;
?直接輸入數(shù)據(jù),數(shù)據(jù)塊開(kāi)始
34 56 78 90 35 67 89 10 23 65 77 45
?數(shù)據(jù)塊
;
?數(shù)據(jù)塊結(jié)束
變量y后面的@@表示數(shù)據(jù)可以在一行里連續(xù)讀入,SAS默認(rèn)按列來(lái)分隔變量,可是這里只有兩個(gè)變量,輸成兩列數(shù)據(jù)太長(zhǎng),因此加上兩個(gè)@@,SAS見(jiàn)到這個(gè)符號(hào),在按變量名依次讀取完數(shù)據(jù)后,不是跳到下一行,而是繼續(xù)在該行讀數(shù)據(jù),直至本行結(jié)束或到達(dá)分號(hào)為止。
如果你對(duì)這段敘述無(wú)法理解,請(qǐng)去掉兩個(gè)@@,重新運(yùn)行一遍程序,看看LOG視窗中的提示都有些什么變化。
【外部文件讀入方式】
如果剛才的數(shù)據(jù)已經(jīng)事先輸好,在硬盤(pán)上的“C:\USER”文件夾內(nèi)存為temp.dat文件,該文件內(nèi)容如下(純文本):
34 56 78 90 35 67 89 10 23 65 77 45
則我們可以輸入程序如下:
data temp; 命名將要建立的數(shù)據(jù)集為work.temp
Infile ’c:\user\temp.dat’; 指定外部數(shù)據(jù)文本文件名
input x y@@; 要輸入的變量為x、y,并且連續(xù)輸入
Run; 數(shù)據(jù)步結(jié)束,以上語(yǔ)句可以執(zhí)行了
數(shù)據(jù)步以DATA語(yǔ)句開(kāi)始,那么在哪里結(jié)束?在遇到run語(yǔ)句或另一個(gè)數(shù)據(jù)步/程序步時(shí)就結(jié)束了。
為什么程序的最后都要加一句run?這個(gè)問(wèn)題還不太好解釋,每一個(gè)程序應(yīng)至少在最后有一個(gè)run語(yǔ)句,表明前面的所有語(yǔ)句可以提交運(yùn)行了,如果沒(méi)有這一句,SAS會(huì)以為你后面還有語(yǔ)句要輸入,從而將一些非立即執(zhí)行的語(yǔ)句保留在編譯緩沖區(qū)中,等待后續(xù)命令發(fā)出后一起執(zhí)行,這有時(shí)會(huì)把事情弄得很糟。出于減少麻煩的需要,建議大家養(yǎng)成在每一個(gè)數(shù)據(jù)步或程序步后都寫(xiě)上一句run的習(xí)慣。
Submit命令和run語(yǔ)句有什么區(qū)別?這是初學(xué)者最?lèi)?ài)問(wèn)的一個(gè)問(wèn)題,也同樣是一個(gè)難以回答的問(wèn)題。簡(jiǎn)單地講,run是程序語(yǔ)句,可在程序中多次出現(xiàn),它表示前面的程序段已經(jīng)全部寫(xiě)完,可以作為一個(gè)或幾個(gè)整體提交運(yùn)行了,而Submit則是SAS命令,只在最后程序運(yùn)行的時(shí)候發(fā)出,表示將程序正式提交運(yùn)行。如果你還不明白,那么我還是來(lái)給你打個(gè)比方,run語(yǔ)句是你對(duì)SAS說(shuō)“我想讓您做的就是這些了”,而Submit命令就是對(duì)SAS說(shuō)“現(xiàn)在開(kāi)始為我做這些事,好嗎”,明白了嗎?
【讀入其他格式的數(shù)據(jù)文件】
除了以上的兩種通過(guò)數(shù)據(jù)步創(chuàng)建數(shù)據(jù)集的方法,SAS還提供了一些其他的方式可以用來(lái)讀入其他格式的數(shù)據(jù)文件。6.11版本以上的SAS可以利用FILE菜單上的import命令將其他格式的數(shù)據(jù)文件導(dǎo)入SAS系統(tǒng),創(chuàng)建SAS自己的數(shù)據(jù)集。可以導(dǎo)入的數(shù)據(jù)文件格式有:dBase數(shù)據(jù)庫(kù),EXCEL工作表,LOTUS的數(shù)據(jù)庫(kù),純文本的數(shù)據(jù)文件等。
導(dǎo)入的操作完全是對(duì)話式的,界面友好,簡(jiǎn)便實(shí)用。以下簡(jiǎn)單敘述導(dǎo)入的步驟,假如例1.1的數(shù)據(jù)輸成一個(gè)dBASEIII數(shù)據(jù)庫(kù)文件temp.dbf, 已經(jīng)存放在"c:\user"下,要導(dǎo)入成數(shù)據(jù)集work.li1_1。選擇FILE菜單上的import,彈出一個(gè)對(duì)話框,按照向?qū)У奶崾具M(jìn)行下去。
1. 選擇導(dǎo)入的數(shù)據(jù)格式,從下拉式菜單上選擇DBF格式,單擊NEXT按鈕。
2. 給出數(shù)據(jù)文件的位置和文件名,在對(duì)話框中鍵入C:\USER\temp.DBF,或點(diǎn)BROWSE直接從上面選擇文件,選好后單擊NEXT按鈕。
3. 選擇導(dǎo)入的目的地,即指定要?jiǎng)?chuàng)建的數(shù)據(jù)集的名字和存放的數(shù)據(jù)庫(kù)名,先在左面的對(duì)話框選擇數(shù)據(jù)庫(kù)名WORK(臨時(shí)庫(kù)),在右面的對(duì)話框鍵入數(shù)據(jù)集的名字li1_1,此名可任意起,少于8個(gè)字符,選擇完后,單擊FINISH按鈕,就完成了此次操作。
這時(shí)已經(jīng)建好了一個(gè)數(shù)據(jù)集,名為WORK.li1_1,與我們前面建立的數(shù)據(jù)集完全一致。
§3.3 SAS程序的程序步
通俗的講,SAS的程序步(有的書(shū)中也稱(chēng)過(guò)程或過(guò)程步)就是已經(jīng)編好了的用于數(shù)據(jù)整理和統(tǒng)計(jì)的計(jì)算機(jī)程序,你只需要調(diào)用它們就是了。程序步總是用一個(gè)PROC語(yǔ)句開(kāi)始,后面緊跟著程序步名,用以區(qū)分不同的程序步。以下是一些常用的程序步的名稱(chēng)及功能。
程序步名
功 能
SORT 將指定的數(shù)據(jù)集按指定變量排序
PRINT 將數(shù)據(jù)集中的數(shù)據(jù)列表輸出
MEANS 對(duì)指定的數(shù)值變量進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)描述
FREQ 對(duì)指定的分類(lèi)變量進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)描述
TTEST 對(duì)指定的變量做t檢驗(yàn)
ANOVA 對(duì)指定的變量做方差分析
NPAR1WAY 對(duì)指定的變量做非參數(shù)檢驗(yàn)
REG 對(duì)指定的變量做回歸分析
CORR 對(duì)指定的變量做相關(guān)分析
CHART 繪出低分辨率的統(tǒng)計(jì)圖
PROC就是程序(procedure)的縮寫(xiě),而程序步的名字大都是其功能相對(duì)應(yīng)的單詞或詞組的縮寫(xiě)。
可見(jiàn)SAS的許多功能就是通過(guò)程序步來(lái)體現(xiàn)的,可如此多的種類(lèi)也使我們難以總結(jié)出一個(gè)程序步的通式來(lái)。不過(guò)仍可大致給出如下結(jié)構(gòu):
PROC 過(guò)程名 [DATA=數(shù)據(jù)集名] [選項(xiàng)];
??? 該過(guò)程的專(zhuān)用語(yǔ)句描述;
??? [VAR 變量序列;]
??? [WHERE 條件表達(dá)式...;]
??? [BY 變量序列;]
Run;
方括號(hào)里的語(yǔ)句均可以省略,在這時(shí)該過(guò)程按最通常的情況來(lái)處理,即:
處理最新建立的SAS數(shù)據(jù)集。
處理所有的變量(或?qū)σ粋€(gè)計(jì)算過(guò)程來(lái)說(shuō)處理全部數(shù)值變量)。
一次處理整個(gè)數(shù)據(jù)集而不是某個(gè)子集。
我們?cè)诘谝徽轮杏玫降腜RINT程序步就是采用的這種默認(rèn)方式。
但有時(shí)我們的要求超出了默認(rèn)方式所提供的范圍,這時(shí)就要?jiǎng)佑梅嚼ㄌ?hào)里的秘密武器了。
DATA參數(shù) 指明所需處理的數(shù)據(jù)集名,請(qǐng)注意在這里它是一個(gè)參數(shù)而不是語(yǔ)句。
VAR語(yǔ)句 如果只想分析某一個(gè)或幾個(gè)特定的變量,則可用VAR語(yǔ)句指定它們。例如只想顯示變量x的列表,則PRINT過(guò)程如下:
Proc print ;
??? Var x;
Run;
如果想顯示x和y兩個(gè)變量,則將VAR語(yǔ)句改為如下形式即可:
var x y;
當(dāng)然,也可以將VAR語(yǔ)句刪除,結(jié)果相同。
Where語(yǔ)句 如果你想處理的不是整個(gè)數(shù)據(jù)集而只是其中符合某種條件的子集,那么WHERE語(yǔ)句將會(huì)非常有用,如上例中我們只想顯示大于50的x變量的值,則在PRINT過(guò)程中加入where語(yǔ)句如下:
Where x>50;
如果條件變?yōu)閤、y兩個(gè)變量的值都要大于50,則where語(yǔ)句改為:
where x>50 and y>50;
SAS語(yǔ)言中常用的邏輯表達(dá)符號(hào)有and(和)、or(或)、xor(異或)、ne(不等)等。
By語(yǔ)句 如果你需要分組處理數(shù)據(jù),例如要按性別分組輸出統(tǒng)計(jì)結(jié)果,你有兩種選擇,一是用不同的where語(yǔ)句將同一個(gè)程序步反復(fù)寫(xiě)幾遍;另一種顯然更酷的方法就是采用by語(yǔ)句。如上例我們想按不同的y值輸出x值,則加入by語(yǔ)句如下:
By y;
使用BY語(yǔ)句要求數(shù)據(jù)集已經(jīng)按BY語(yǔ)句中指定的變量排序。如果沒(méi)有排序,則程序無(wú)法正確運(yùn)行。可以用SORT過(guò)程來(lái)排序,語(yǔ)法結(jié)構(gòu)如下:
PROC SORT DATA=數(shù)據(jù)集名;
??? BY 變量名列;
RUN;
§3.4 結(jié)構(gòu)化語(yǔ)句簡(jiǎn)介
每一種結(jié)構(gòu)化語(yǔ)言編寫(xiě)的程序都由順序、分支、循環(huán)三種結(jié)構(gòu)構(gòu)成, SAS語(yǔ)言也不例外。在這里簡(jiǎn)要介紹一下分支和循環(huán)語(yǔ)句的語(yǔ)法。這些語(yǔ)句均可直接在數(shù)據(jù)步和程序步中使用,適當(dāng)?shù)厥褂盟鼈兛梢源蟠蠛?jiǎn)化我們的工作。
3.4.1 分支(條件)語(yǔ)句
【語(yǔ)法格式】
語(yǔ)法格式如下:
IF 條件 THEN
??? 程序塊;
ELSE
程序塊;
可見(jiàn)其語(yǔ)法和FOXBASE語(yǔ)言十分相似,只是前面多了THEN,結(jié)尾沒(méi)有ENDIF,可以將兩者相比較來(lái)理解。其中程序塊如果只有一句,則可直接寫(xiě)出,否則應(yīng)以DO開(kāi)頭,以END結(jié)束。
【應(yīng)用實(shí)例】
例3.1 在產(chǎn)生數(shù)據(jù)集temp的同時(shí)為其增加變量class,當(dāng)x>50時(shí)class=1,否則class=2。
解:程序如下:
data temp;
?數(shù)據(jù)步開(kāi)始,定義要建立的數(shù)據(jù)集為WORK庫(kù)的TEMP
??? input x y@@;
?要輸入的變量為X和Y,并且采用數(shù)據(jù)連續(xù)讀入方式
??? if x>50 then class=1;
?建立新變量CLASS,如果X>50,則CLASS=1
??? else class=2;
?否則,CLASS=2
cards;
?數(shù)據(jù)塊開(kāi)始
34 56 78 90 35 67 89 10 23 65 77 45
?數(shù)據(jù)塊
;
?數(shù)據(jù)塊結(jié)束
proc print; 列表輸出數(shù)據(jù)集中的數(shù)據(jù),檢查有無(wú)錯(cuò)誤
run; 程序結(jié)束,開(kāi)始運(yùn)行以上程序
以上程序在書(shū)寫(xiě)時(shí)采用了縮進(jìn)格式,使程序的結(jié)構(gòu)更清楚。當(dāng)然大家可以左對(duì)齊寫(xiě)完所有的語(yǔ)句,但這樣書(shū)寫(xiě)的程序在較長(zhǎng)時(shí)難以閱讀。
為什么可以這樣寫(xiě)?在這里有必要解釋一下數(shù)據(jù)步的執(zhí)行過(guò)程,input語(yǔ)句按變量順序?qū)?shù)據(jù)讀入內(nèi)存緩沖區(qū),直至每一個(gè)變量都有值相對(duì)應(yīng)。然后數(shù)據(jù)步繼續(xù)向下執(zhí)行,從而其它語(yǔ)句可以修改內(nèi)存緩沖區(qū),如修改值、增加變量等,在執(zhí)行到數(shù)據(jù)步結(jié)束后,程序又回到input語(yǔ)句處繼續(xù)執(zhí)行,直到數(shù)據(jù)讀完為止。現(xiàn)在再看看這個(gè)程序,大家可以理解它了吧!
3.4.2 循環(huán)語(yǔ)句
【語(yǔ)法格式】
語(yǔ)法格式如下:
DO 起始條件 TO 終止條件;
???? 程序塊;
END;
該語(yǔ)句主要用于建立數(shù)據(jù)集。
【應(yīng)用實(shí)例】
例3.2 在產(chǎn)生數(shù)據(jù)集temp的同時(shí)為其增加變量class,取值依次為1、2。
解:程序如下:
Data temp; 數(shù)據(jù)步開(kāi)始,定義要建立的數(shù)據(jù)集為WORK庫(kù)的TEMP
??? do class = 1 to 2; 循環(huán)開(kāi)始,循環(huán)控制變量為CLASS,取值從1到2
??????? input x y@@; 要輸入的變量為X和Y,并且采用數(shù)據(jù)連續(xù)讀入方式
??????? output; 用OUTPUT語(yǔ)句將循環(huán)控制變量寫(xiě)入數(shù)據(jù)集中
??? end; 循環(huán)結(jié)束
cards; 數(shù)據(jù)塊開(kāi)始
34 56 78 90 35 67 89 10 23 65 77 45
?數(shù)據(jù)塊
; 數(shù)據(jù)塊結(jié)束
run; 程序結(jié)束,開(kāi)始運(yùn)行以上程序
注意在數(shù)據(jù)步中,我們不需要用語(yǔ)句改變循環(huán)變量的大小,系統(tǒng)會(huì)自動(dòng)改變。
現(xiàn)在,SAS語(yǔ)言的基本知識(shí)算是介紹完了。在理論上,你現(xiàn)在可以坐在計(jì)算機(jī)前,獨(dú)立編寫(xiě)程序以做出你的統(tǒng)計(jì)作業(yè)或者是向SAS公司發(fā)射核導(dǎo)彈。但為了使你能盡可能地少走彎路(我指的是做統(tǒng)計(jì)作業(yè)而不是后者),在以后的各章中我們將重點(diǎn)介紹一些常用的程序步,并且在必要的時(shí)候介紹一些較為深入的內(nèi)容。?總結(jié)
以上是生活随笔為你收集整理的统计软件SAS入门教程:SAS程序初步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用C#将PDF转换为Doc
- 下一篇: 板绘萌新拿到数位板之后,不知道先做什么?