sas 分析分類數據(1)

本篇主要通過案例分析, 瞭解和掌握sas的一些基礎知識。

基礎知識點有:

目錄

創建sas數據集

瞭解proc mean & proc freq 過程步

給變量添標籤

給變量值添加標籤

重編碼數據

用輸出格式重編碼變量


創建sas數據集

data quest;
	input ID          $  1-3
		  AGE            4-5
		  GENDER      $    6
		  RACE        $    7
		  MARITAL     $    8
		  EDUCATION   $    9
		  PRESIDENT       10
		  ARMS            11
		  CITIES          12;
	DATALINES;
	001091111232
	002452222422
	003351324442
	004271111121
	005682132333
	006651243425
	;
run;

瞭解proc mean & proc freq 過程步

/*
maxdec=2 表示保留小數點後兩位
n        表示計算未缺失觀測值數量
mean     表示計算平均數
std      表示計算標準差
clm      表示計算平均數的95%置信區間
*/

proc means data=quest maxdec=2 n mean std clm;
	title "questionnair analysis";
	var age;
run;

proc freq data=quest;
	title "Frequency counts for categorical variables";
	tables GENDER RACE MARITAL EDUCATION PRESIDENT ARMS CITIES;  /*tables 語句後,列出需要計算頻數的各個變量*/
	/*tables GENDER -- CITIES;  /*符號--, 表示包含數據集從GENDER到CITIES之間依次排列的所有變量*/
run;

給變量添標籤

**給變量添標籤;
/*可以利用label語句給每個變量名打上標籤,但標籤字符至多包括256個字符(每個空格算一個字符) 且必須在單或雙引號內*/

data quest;
	input ID          $  1-3
		  AGE            4-5
		  GENDER      $    6
		  RACE        $    7
		  MARITAL     $    8
		  EDUCATION   $    9
		  PRESIDENT       10
		  ARMS            11
		  CITIES          12;
	
	label MARITAL   = "婚姻狀況"
		  EDUCATION = "教育水平"
		  PRESIDENT = "對總統工作的評價"
		  ARMS      = "增加軍費的開支"
		  CITIES    = "對大城市提供政府援助";
	
	DATALINES;
	001091111232
	002452222422
	003351324442
	004271111121
	005682132333
	006651243425
	;
run;

給變量值添加標籤

**給變量值添加標籤(輸出格式);
/*1.爲每個變量定義變量值的內容*/
/*2.使用format語句與1個或多個變量名聯繫起來*/

/*
$SEXFMT 表示輸出格式名 (長度爲1-32個字符);
'1'     表示變量值
'Male'  表示輸出格式值(最長爲32767字符)    

輸出格式名設置注意點:
1.最好不以數字結尾,不可與sas內置格式名相同, 格式名和變量名可以相同;
2.可以是一個單獨值、一個範圍、關鍵詞或三者結合;
3.若對字符變量定義輸出格式,格式名必須以符號"$"開頭;

*/

/*
在DATA步驟或PROC步驟中均可以使用format語句;
若把format語句放在data步,在之後的的所有過程中格式的值和指定的變量關聯;
若把format語句放在PROC步,格式的值將隻影響該過程;
*/

proc format;
	value $SEXFMT  '1' = 'Male'
	               '2' = 'Female'
				   other = 'Miscoded'
				   ;

	value $RACE    '1' = 'white'
				   '2' = 'african am.'
				   '3' = 'hispanic'
				   '4' = 'other'
				   ;
				   
	value $OSCAR   '1' = 'single'
				   '2' = 'married'
				   '3' = 'widowed'
				   '4' = 'divorced'
				   ;
				   
	value $EDUC    '1' = 'high sch or less'
				   '2' = 'two yr. college'
				   '3' = 'four yr. college'
				   '4' = 'graduate degree'
				   ;
				   
	value LIKERT   1 = 'str disagree'
				   2 = 'disagree'
				   3 = 'no opinion'
				   4 = 'agree'
				   5 = 'str agree'
				   ;
				   
	value AGEFMT   1 = '0-20'
				   2 = '21-40'
				   3 = '41-60'
				   4 = '>60'
				   ;
run;

/*format語句放在DATA步驟中*/

data quest;
	input ID          $  1-3
		  AGE            4-5
		  GENDER      $    6
		  RACE        $    7
		  MARITAL     $    8
		  EDUCATION   $    9
		  PRESIDENT       10
		  ARMS            11
		  CITIES          12;
	
	label MARITAL   = "婚姻狀況"
		  EDUCATION = "教育水平"
		  PRESIDENT = "對總統工作的評價"
		  ARMS      = "增加軍費的開支"
		  CITIES    = "對大城市提供政府援助"
		  ;
		  
	format GENDER        $SEXFMT.   /*在format語句中,每個格式名後應有一個句號(.),目的有助於區別變量名和格式名*/
		   RACE          $RACE.
		   MARITAL       $OSCAR.
		   EDUCATION     $EDUC.
		   PRESIDENT ARMS CITIES LIKERT.
		   ;
	
	DATALINES;
	001091111232
	002452222422
	003351324442
	004271111121
	005682132333
	006651243425
	;
run;	
	

重編碼數據

**重編碼數據;	
/*	
if condition  then statement;
else if condition then statement;	
*/
data quest;
	input ID          $  1-3
		  AGE            4-5
		  GENDER      $    6
		  RACE        $    7
		  MARITAL     $    8
		  EDUCATION   $    9
		  PRESIDENT       10
		  ARMS            11
		  CITIES          12;
		  
	if age > 0 and age <= 20 then AGEGRP = 1;
	else if age > 20 and age <= 40 then AGEGRP = 2;
	else if age > 40 and age <= 60 then AGEGRP = 3;
	else if age > 60 then AGEGRP = 4;
	
	label MARITAL   = "婚姻狀況"
		  EDUCATION = "教育水平"
		  PRESIDENT = "對總統工作的評價"
		  ARMS      = "增加軍費的開支"
		  CITIES    = "對大城市提供政府援助"
		  AGEGRP    = "年齡組"
		  ;
		  
	format GENDER        $SEXFMT.  
		   RACE          $RACE.
		   MARITAL       $OSCAR.
		   EDUCATION     $EDUC.
		   PRESIDENT ARMS CITIES LIKERT.
		   ;
	
	DATALINES;
	001091111232
	002452222422
	003351324442
	004271111121
	005682132333
	006651243425
	;
run;	
	
proc freq data=quest;
	tables GENDER -- AGEGRP;  
run;

用輸出格式重編碼變量

/*使用輸出格式重編碼變量*/
/*在不生成新變量的情況下重編碼AGE的方法*/

/*
關鍵詞 LOW , HIGH, OTHER
LOW & HIGH: 分別用來指定數據集中最小值和最大值(不包括缺失值) ;
OTHER: 代表在之前設定的格式範圍中沒有出現的其他值;
LOW-20 :表示從最小值到20之間的所有值;
注意:數值型變量中,關鍵詞LOW不包括缺失值,但字符型型變量則包括;

*/

proc format;
	value AGEGRP LOW-20  = '0-20'
				 21-40   = '21-40'
				 41-60   = '41-60'
				 60-HIGH = '>60'
				 .       = 'NULL'
				 OTHER   = 'OUT OF RANGE'
				 ;
run;

proc freq data=quest;
	tables age;
	format age AGEGRP.;
run;

 

發佈了21 篇原創文章 · 獲贊 6 · 訪問量 944
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章