SAS 의기본형식 1. INPUT 문 DATA wghtclub; INPUT idno 1-4 name $ 6-24 team $ strtwght endwght; loss=strtwght -endwght; CARDS; 1023 David Shaw red 189 165 1049 Amelia Serrno yellow 145 124 1219 Alan Nance red 210 192 1246 Ravi Sinha yellow 194 177 1078 Ashley McKnight red 127 118 ; SAS에서 Data Step을실행할시시작은 [DATA 데이터셋명 ;] 이고끝은 [] 이다. SAS에서이름을부여할수있는것은 DATA 다음에쓰여지는데이터셋명과 INPUT 다음에지정하는변수명, PROCEDURE에서지정하는 output 명등이있다. 이름부여는영문자와숫자를이용하여 8자이하로지정가능하며숫자가이름의처음에나올수는없다. SAS는대소문자를가리지않으며, 명령문의끝은반드시 ; 을붙여야한다. SAS에서주석처리는 /* 주석 */ 로하거나한줄처리는 * 주석 방식을이용한다. 변수는문자변수와숫자변수로나누어진다. 문자변수는관찰값이문자로인식되는경우사용하며변수명뒤에 $ 을붙여숫자변수와구분한다. 숫자인경우에도변수명뒤에 $ 을표시하면숫자로인식하지않고문자로인식을한다. - 1 -
[INPUT] 뒤에는변수와관련된정보를표기한다. [CARDS;] 뒤에는각각의변수가가지는관측값들을표기한다. >> 위의프로그램에서데이터셋명은 wghtclub 이고, 변수는 idno, name, team, strtwght, endwght 이다. 이중 name 과 team 은 $ 이붙었기때문에문자변수로인식을하고나 머지변수들은숫자변수로인식을한다. 변수 idno 는 1-4 칼럼, 변수 name 은 6-24 칼럼에해당하는값들을불러들인다. 칼럼을 지정하지않은변수들은관찰값이시작하는지점부터공백이나오는지점까지하나의값 으로인식을하게된다. 불러들이는변수를이용해새로운변수를만들시에는 CARDS; 문앞에만들어주면된다. 위의프로그램에서 loss 라는변수는 strtwght - endwght 값으로만들어진다. 관찰값읽기 1 - INPUT 문 - 변수를사용할때변수명은 8 자이하의영문자와숫자를사용하며문자변수인경우에는변수명뒤에 $ 을사용함. - 관찰값을변수에대응시킬때칼럼위치를지정하여사용하는경우에해당변수명다음에자료에해당하는칼럼번호를써주면된다. - 하나의관찰값내에서빈공백을포함하지않고관찰값과관찰값사이는공백으로분리가되어있으면칼럼번호를굳이지정할필요는없다. INPUT vriable_name [$] [ 칼럼시작번호 [- 칼럼끝번호 ]] [vriable_name [$] [ 칼럼시작번호 [- 칼럼끝번호 ]][ ]] ; << 결과 >> - 2 -
DATA STEP으로생성된데이터셋은항상라이브러리에저장된다. 기본적으로 work' 라는라이브러리에저장되며임시저장소의역할을한다. 따라서프로그램을종료하면생성된데이터셋은모두사라지게된다. 데이터셋을저장하려면사용자정의라이브러리를생성시키면된다. 생성시킨데이터셋은왼쪽창의 탐색기 에서 라이브러리 를들어가면 work' 라는폴더안에저장되어있다. 데이터셋을클릭하면위의그림과같은결과창을볼수있다. 명령문의실행은 [F8] 키를누르거나을누르면된다. 기본적으로문자는왼쪽정렬숫자는오른쪽정렬로되어있어변수의특성을간단하게확인할수있다. 2. PROC PRINT 형식 PROC PRINT DATA=wghtclub; TITLE 'Health Club DATA'; PROC PRINT는 SAS DATASET이형성된후에 DATASET의전체혹은일부의변수와관찰값을출력하는 PROCEDURE이다. wghtclub DATASET이보여지게되면변수를지정하지않았으므로 DATASET의전체가보여지게된다. 또한 wghtclub DATASET이바로직전에수행된데이터셋이므로 data=wghtclub를지정하지않아도무방하다. TITLE 문은프로그램수행후에나타난결과를보다구별을쉽게하기위해결과에제목 을붙이는기능을하는것으로원하는내용을 사이에써주면된다. 제목의위지는 각페이지상단에위치하며, TITLE 는첫줄에붙고, TITLE2 는두번째줄에붙는다. Health Club DATA Obs idno name team strtwght endwght loss 1 1023 David Shaw red 189 165 24 2 1049 Amelia Serrno yellow 145 124 21 3 1219 Alan Nance red 210 192 18 4 1246 Ravi Sinha yellow 194 177 17 5 1078 Ashley McKnight red 127 118 9 TITLE문에의해서첫줄에 HEALTH CLUB DATA이라는제목이찍힌다. PRINT를하면자동으로관찰값번호를의미하는 OBS가제일먼저나오고그다음에는 VAR에지정된순서대로인쇄된다. VAR을지정하지않았으면 INPUT된순서에따라인쇄된다. - 3 -
PROC PRINT DATA=wghtclub; var name loss; VAR 옵션에변수를적어주면아래와같이표기한변수에대한결과만보여준다. Health Club DATA OBS name loss 1 David Shaw 24 2 Amelia Serrno 21 3 Alan Nance 18 4 Ravi Sinha 17 5 Ashley McKnight 9 PROC PRINT 형식 1 - SAS DATASET 의전체혹은일부의변수와관찰값을보여주는 PROCEDURE 이다. PROC PRINT DATA = dataname; [VAR vriable_names ; ] 3. PROC TABULATE 형식 PROC TABULATE DATA=wghtclub; CLASS team; VAR strtwght endwght loss; TABLE team, mean*(strtwght endwght loss); TITLE 'Mean Starting Weight, Ending, and Weight Loss'; PROC TABULATE는각변수들의내용을여러가지기술통계량으로계층구조의보고서형식으로도표화시키는 PROCEDURE이다. 여기서사용될수있는통계량은 N, NAMES, MEAN, STD, MIN, MAX, RNGE, SUM, VAR, USS, CSS, STDERR, CV, T, PRT, SUMWGT, PCTN, PCTSUM등이있다. CLASS 문은 분류하고자하는변수들을지정하며문자변수나숫자변수모두가능하나 - 4 -
이산적값을가지는변수가적합하다. 연속변수인경우에는이산변수로바꾸어서사용한 다. 예제에서 team 변수는문자변수로 red' 또는 yellow' 의값만가지는이산변수이다. VAR 문은기술통계량을구하고자하는변수들을기술하며, 위에서는 strtwght, endwght, loss 변수들의기초통계량을구하도록하였다. TABLE문은 3차원까지가능하며각차원은컴마로구분되어, 왼쪽은페이지를지정하고, 가운데는행, 오른쪽은열을가리킨다. 즉, 3차원으로도표화할경우가장왼쪽에사용된변수의값들에의해 page가구분되고, 가운데변수들에의해사용된순서에따라행이지정되고, 오른쪽에사용된변수들에의해열이결정되며각종기초통계량을사용할수있다. 같은열이나행에서변수순서에따라세분화시킬경우변수와변수사이에 * 를해주면된다. 2차원으로구성할경우가장왼쪽변수와컴마를제외하고가운데변수들부터사용하면된다. 위에서보면컴마가 1개이므로가장왼쪽을제외시키고 2차원으로 team변수는행, strtwght, endwght, loss변수는열을구성하게되며세변수에대하여 team별로평균값을구하였다. Mean Starting Weight, Ending, and Weight Loss ----------------------------------------------------------------------- Mean --------------------------------------- strtwght endwght loss ------------------------------+------------+------------+------------- team ------------------------------ red 175.33 158.33 17.00 ------------------------------+------------+------------+------------- yellow 169.50 150.50 19.00 ----------------------------------------------------------------------- 앞의프로그램중 TABLE 문에서 team, name*(strtwght endwght loss) 라고하였으므로출력결과는행방향으로는 team변수의값으로구분이되고, 열은먼저평균값으로지정하였으므로맨위에 MEAN으로지정된후 strtwght,,endwght, loss변수의관찰값들평균값이 team 별로나뉘어서구해진것을볼수있다. PROC TABULATE 형식 - 각종기술통계량을보고서형태로도표화시키는데유용한 PROCEDURE 이다. - CLASS 문에사용되는분류변수는이산형의값을가지는문자또는숫자변수모두 가능하며, 연속형값을가지는변수인경우에는이산변수로바꾸어주어야한다. PROC TABULTE DATA = dataname ; [ CLASS 분류변수명 ; ] [ VAR vriable_names ; ] TABLE [variable_name,][variable_name OR 기초통계량 [*variable_name or 기초통계량 ],] [variable_name or 기초통계량 [*variable_name or 기초통계량 ]]; - 5 -