CALL SYMPUT与CALL SYMPUTX区别
http://www2.sas.com/proceedings/sugi29/052-29.pdf
[SAS] CALL SYMPUT與CALL SYMPUTX
CALL SYMPUT的功能是可以在DATA step內(nèi)將值塞到一個macro變量里面。如果這個macro變量已經(jīng)存在,那這個call就會更新該macro變量的值。
CALL SYMPUT簡介
CALL SYMPUT基本用法:
CALL SYMPUT (macro便倆個 , 值);
注:不會自動去除值前后的空白
可以分成常見的兩種寫法:
(1) 這一行statement可以將值Cookie塞入macro變量Gift里面,值必須給予單引號
call symput (‘Gift’,'Cookie’);
(2) DATA set變量nage的值塞入macro變量a14。這里macro變量名稱為a14,存在DATA step的字串變量myvar內(nèi)
myvar=’a14′;
call symput (myvar,nage);
CALL SYMPUT范例
data temp;
???? set sashelp.class end=eoa;
??? ?if age gt 14 then nage+1;
??? ?if eoa then?call symput(‘n14′,put(nage,z2.));
run;
proc means data=temp;
??? ?title “N of student that age more than 14 years old:?&n14“;
???? var age;
run;
程序中put(nage,z2.),用put做數(shù)字轉(zhuǎn)文字的轉(zhuǎn)換,將nage算好的值變成文字。不用put函數(shù)也可以,因為sas會自動幫你轉(zhuǎn)換,但是差別在于對對其余空格讓版面很丑。
結(jié)果如下↓
CALL SYMPUTX簡介
那CALL SYMPUTX基本寫法:
CALL SYMPUTX (macro變量 , text , );
上面提到CALL SYMPUT不會把值的前后空白去掉,但是CALL SYMPUTX會自動去點前后空白
而且第三個位置的是選擇性的設(shè)定,可由3種選擇
分別是G(global symbol table)、L(local symbol table)、F(當macro變量已存在與任一個symbol table)
CALL SYMPUT范例
在這個例子,CALL SYMPUTX被放在cards 之前,因此在每次DATA step執(zhí)行的時候,CALL SYMPUTX就會執(zhí)行
此程式目的在抓取最后一筆booktitle的值
data newbooks;
???? input booktitle $ 1-40;
???? call symputx('lasttitle',booktitle);
???? cards;
? Hello Java Programming
? My Encyclopedia of Newworks
? Strategic Computer Programming
? Everday Email Eriquette
? ;
run;
%put The value of macro var LASTTTILE is &lasttitle.;
結(jié)果
The value of macro var LASTTTILE is?Everday Email Eriquette
因為資料最后一筆值是「Everday Email Eriquette」,就會被寫入put里面。
總結(jié)
以上是生活随笔為你收集整理的CALL SYMPUT与CALL SYMPUTX区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sas infile和filename
- 下一篇: SAS的数组array介绍