實驗二SAS程式設計基礎

2022-11-26 17:12:06 字數 3678 閱讀 7544

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位的正整數,要求 求出它是幾位數 分別列印出每一位數字 按逆序列...