포스팅 목차
68. CALL SET
SAS 데이터 세트 변수를 같은 이름이나 타입을 가진 DATA STEP 이나 Macro변수와 연결한다.
Category: | 변수제어함수 (Variable Control) |
MAIN |
문 법
CALL SET (data-set-id); |
Arguments
- data-set-id
- 는 Data set이 Open되었을때 OPEN함수에 할당된 인식자.
참 고
GETVARC, GETVARN 함수와 유사
관련 함수
함수명 | 함수내용 |
CALL LABEL | 지정한 문자 변수에 대해 변수 라벨을 반환받는다. |
CALL SET | SAS 데이터 세트 변수를 같은 이름이나 타입을 가진 DATA STEP 이나 Macro변수와 연결한다. |
CALL VNAME | 지정한 변수값으로써 변수 이름들을 관측치로 할당한다. |
FETCH | SAS 데이터 세트로부터 현재 관측치 다음의 관측치를 데이터 세트 데이터 벡터(DDV) 안으로 관측치를 읽는다. |
FETCHOBS | SAS 데이터 세트로부터 지정한 관측치를 데이터 SET 데이터 벡터(DDV)로 읽는다. |
GETVARC | SAS데이터 세트에서 문자변수의 값을 반환한다. |
GETVARN | SAS데이터 세트에서 숫자변수의 값을 반환한다. |
VNAME | 지정된 변수의 이름을 반환한다. |
VNAMEX | 변수 이름으로써 지정된 인수의 값을 반환한다. |
예 제
예 제 1 :
sasuser.houses 데이터를 OPEN한 후에 call set함수를 이용하여서 할당한 변수와
테이터를 연결하여 복사한다. (call set (dsid);을 삭제후 실행하여 비교)
SAS Statements | Results |
---|---|
data mydata; * CALL SET에 의해 할당에 대한 변수 생성; length style $8 sqfeet bedrooms baths 8 street $16 price 8; style = ''; sqfeet = ''; bedrooms = ''; baths = 0; street = ''; price = 0; drop rc dsid; dsid = open("sasuser.houses","i"); * sasuser.houses(PDV)와 연결; call set (dsid); put dsid=; do i=1 to 10; rc=fetchobs(dsid,i); output; end; run; |
sasuser.houses에서 10개 데이터를 복사 |
%macro setvar; %let dsid=%sysfunc(open(sasuser.houses,i)); %syscall set(dsid); %let rc=%sysfunc(fetchobs(&dsid,10)); %let rc=%sysfunc(close(&dsid)); %mend setvar; %global price style; %setvar %put _global_; |
GLOBAL STYLE CONDO GLOBAL PRICE $127,150 |
예 제 2 :
sasuser.class에서 fetchobs함수를 이용하여서 첫 번째 관측치의 name과 sex변수 값을 가져오고,
4번째 변수(height)값을 가져온다. name과 sex의 경우에는 getvarn을 사용하지 않고,
Call set에 의해 데이터를 가져올수 있다.
SAS Statements | Results |
---|---|
data _null_; retain name ' '; retain sex ' '; rc=open('sasuser.class'); call set(rc); rc1 = fetchobs(rc,1); rc2 = sysmsg(); rc3 = curobs(rc); hei = getvarn(rc,4); rc4 = close(rc); put name= sex= hei= rc= rc1= rc2= rc3= rc4=; run; |
name=Alfred sex=M hei=69 rc=1 rc1=10005 rc2=ERROR: ERROR: DATA step variable Age not defined.. rc3=1 rc4=0 |
%let name =; %let sex =; %let rc = %sysfunc(open(sasuser.class)); %syscall set(rc); %let rc1 = %sysfunc(fetchobs(&rc,1)); %let rc2 = %sysfunc(sysmsg()); %let rc3 = %sysfunc(curobs(&rc)); %let hei = %sysfunc(getvarn(&rc,4)); %let rc4 = %sysfunc(close(&rc)); %put &name &sex &hei &rc &rc1 &rc2 &rc3 &rc4; |
Alfred M 69 1 0 1 0 |
예 제 3 :
sashelp.class의 데이터 값을 Call set 함수를 이용하여 복사한다.
SAS Statements |
data _null_;
if 0 then set sashelp.class; * prep data set PDV;
length age 8;
ds = open ("sashelp.class");
call set (ds);
do rc = fetch(ds) by 0 while (rc = 0);
put _all_ ;
rc = fetch(ds);
end;
if rc ne %sysrc (_SWEOF) then do;
msg = sysmsg();
put _all_ ;
end;
stop;
run;
Results |
Name=Alfred Sex=M Age=14 Height=69 Weight=112.5 ds=1 rc=0 msg= _ERROR_=0 _N_=1
Name=Alice Sex=F Age=13 Height=56.5 Weight=84 ds=1 rc=0 msg= _ERROR_=0 _N_=1
Name=Barbara Sex=F Age=13 Height=65.3 Weight=98 ds=1 rc=0 msg= _ERROR_=0 _N_=1
Name=Carol Sex=F Age=14 Height=62.8 Weight=102.5 ds=1 rc=0 msg= _ERROR_=0 _N_=1
--------------------------- 생 략 ---------------------------------------
Name=Robert Sex=M Age=12 Height=64.8 Weight=128 ds=1 rc=0 msg= _ERROR_=0 _N_=1
Name=Ronald Sex=M Age=15 Height=67 Weight=133 ds=1 rc=0 msg= _ERROR_=0 _N_=1
Name=Thomas Sex=M Age=11 Height=57.5 Weight=85 ds=1 rc=0 msg= _ERROR_=0 _N_=1
Name=William Sex=M Age=15 Height=66.5 Weight=112 ds=1 rc=0 msg= _ERROR_=0 _N_=1
SAS 함수(SAS Function) 리스트 링크 |
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 데이터 스텝 구문 리스트(SAS Data Step Statement) |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
[SAS 함수] 70. CALL SOFTMAX 함수 (0) | 2018.11.24 |
---|---|
[SAS 함수] 69. CALL SLEEP 함수 (0) | 2018.11.24 |
【SAS 함수】 67. CALL SCANQ 함수 (0) | 2018.11.24 |
【SAS 함수】 66. CALL SCAN 함수 (0) | 2018.11.24 |
【SAS 함수】 65. CALL RXSUBSTR (0) | 2018.11.24 |
댓글