sas語言和其它計算機語言一樣,也有其專有的詞彙(即關鍵字)和語法。關鍵字、名字、特殊字元和運算子等按照語法規則排列組成sas語句,乙個sas程式由若干資料步、過程步組合而成,而每乙個程式步通常由若干語句構成。sas程式是在editor視窗中進行編輯,提交執行後可以在log視窗中顯示有關資訊和提示,在output視窗顯示執行的結果。
通過實驗了解sas程式設計的基本概念,掌握sas程式設計的基本方法,掌握sas資料步對資料集的管理和對資料的預處理。
一、建立邏輯庫與資料集,包括邏輯庫的建立、直接輸入資料建立資料集與讀取外部資料檔案建立資料集。
二、資料檔案的編輯與整理,包括資料集的橫向合併與縱向合併、資料集內容的複製、變數和觀測的增減與篩選、資料集的拆分和資料的排序等。
(1) 首先在d盤建立乙個資料夾,如d:\sas_shiyan\sasdata。
(2) 建立邏輯庫mylib,編輯並執行下面程式語句即可。
libname mylib "d:\sas_shiyan\sasdata";
**如下:
data
input bh $ xm $ xb $ gzrq $ zc $ bm $ jbgz glgz jj kk sfgz;
informat gzrq yymmdd10.;
format gzrq ddmmyy8.;
label bh='編號' xm='姓名' xb='性別' gzrq='工作日期' zc='職稱' bm='部門'
jbgz='基本工資' glgz='工齡工資' jj='獎金' kk='扣款' sfgz='實發工資';
cards;
3003 王以平男 1992-8-1 助工生產 620 300 500 0 1420
3004 林紅女 1993-8-1 助工供銷 620 280 500 200 1200
3005 呂興良男 1982-1-30 工程師技術 1100 500 500 100 2000
3006 司馬宇男 1971-2-17 工人生產 520 720 500 0 1740
3007 張學武男 1967-10-9 工人保衛 520 800 500 200 1620
3008 馮玉霞女 1987-8-1 工程師生產 1100 400 500 250 1750
3009 趙大強男 1968-5-10 工人財務 520 780 500 0 1800
3010 王萍女 1987-8-1 工程師技術 1100 400 500 100 1900
;run;
**如下:
data sy2_3;
infile 'd:\sas_shiyan\原始資料\sy2_';
input bh $ xm $ xb $ gzrq zc $ bm $ jbgz glgz jj kk sfgz;
informat gzrq yymmdd10.;
format gzrq date9.;
run;
注意:文字檔案中資料之間用空格隔開,不能使用tab鍵。
首先將表2-1修改為如圖2-4所示的excel表sy2_並存放在d:\sas_shiyan\原始資料中。
建立資料集**如下:
proc import out=sy2_4
datafile = "d:\sas_shiyan\原始資料\sy2_"
dbms = excel2000 replace;
getnames = no如果表中第一行為變數名,則刪去此行*/
run;
注意:sy2_中第3至5列中的多加的「0」是為了保證匯入後字元型變數的長度正確。
**如下:
data sy2_5;
setdrop gzrq;
if jbgz < 600 then jbgz = 600;
run;
**如下:
data sy2_6;
setyfgz = jbgz + glgz + jj;
run;
**如下:
data sy2_7_1 sy2_7_2;
setselect;
when (jbgz<600) output sy2_7_1;
when (jbgz>=600) output sy2_7_2;
end;
run;
**如下:
data sy2_8;
set sy2_7_1 sy2_7_2;
run;
(1) 提取職稱為「工人」的觀測:
data sy2_9_0;
setif (zc = '工人');
run;
(2) 建立兩個資料集:
data sy2_9_1;
set sy2_9_0;
keep bh xm jbgz;
run;
data sy2_9_2;
set sy2_9_0;
keep bh sfgz;
run;
(3) 橫向合併:
data sy2_9;
merge sy2_9_1 sy2_9_2;
by bh;
run;
proc print; run; /*列表顯示資料集sy2_9*/
**如下:
proc sort data= out = sy2_10;
by jbgz descending sfgz; /*在變數前加descending選項為降序排序,預設為公升序*/
run;
proc print data= sy2_10; /*列表顯示資料集sy2_10*/
run;
說明:在對兩個資料集橫向合併時,為了避免因兩個資料集觀測順序不同造成混亂,一般應將兩個資料集分別按同乙個變數(by變數)排序後再合併,如【實驗2-9】中的橫向合併可寫成:
proc sort data = sy2_9_1;
by bh;
proc sort data = sy2_9_2;
by bh;
run;
data sy2_9;
merge sy2_9_1 sy2_9_2;
by bh;
run;
proc print; run;
**如下:
proc print data = label;
var bh xm bm jbgz ;
label bh = '編號' xm = '姓名' bm = '部門' jigz = '基本工資';
where xb = '男';
run;
1.使用程式設計方法對資料集進行加工:
(1) 生成***=『f』的子集 ;
(2) 生成只包含name,height,weight的子集(用資料集選項或sas語句);
(3) 增加新變數ratio=weight/height;
程式設計基礎C實驗報告
報告教學班級 學號姓名 課程教師 實驗輔導教師 重慶理工大學計算機學院 2012年2月 實驗6 迴圈程式設計 教學班級學號姓名 實驗日期 2012年實驗地點 實驗成績 一 實驗目的 1.了解c語言迴圈結構的使用範圍。2.學會正確使用邏輯運算子和邏輯表示式。3.熟練掌握c語言的三種迴圈結構 whilc...
程式設計基礎 CC實驗報告
實驗一熟悉c 程式開發環境 1 實驗目的 1.了解c 的整合開發環境 2.熟悉c 程式的開發過程 編譯 連線 除錯 執行及檢視結果 3.理解簡單的c 程式結構 2 實驗內容 教材19頁 1 編寫一程式輸出用 組成的菱形圖案 2 設計乙個程式,輸入兩個數,將它們相除,觀察結果為無限迴圈小數時按精度從小...
實驗二選擇結構程式設計
一 實驗目的 1 熟悉vc6.0程式設計環境。2 進一步熟悉用vc6.0除錯c語言源程式的過程。3 熟練使用關係表示式和邏輯表示式作為if語句的條件判斷。4 熟練掌握if語句和switch語句的使用方法。二 實驗內容 1 給乙個不多於5位的正整數,要求 求出它是幾位數 分別列印出每一位數字 按逆序列...