日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CALL SYMPUT与CALL SYMPUTX区别

發布時間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CALL SYMPUT与CALL SYMPUTX区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
call?symput?在data步中將值塞入宏變量
http://www2.sas.com/proceedings/sugi29/052-29.pdf

[SAS] CALL SYMPUTCALL SYMPUTX

CALL SYMPUT的功能是可以在DATA step內將值塞到一個macro變量里面。如果這個macro變量已經存在,那這個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

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做數字轉文字的轉換,將nage算好的值變成文字。不用put函數也可以,因為sas會自動幫你轉換,但是差別在于對對其余空格讓版面很丑。

結果如下


CALL SYMPUTX簡介

CALL SYMPUTX基本寫法:

CALL SYMPUTX (macro變量 , text , );

上面提到CALL SYMPUT不會把值的前后空白去掉,但是CALL SYMPUTX會自動去點前后空白

而且第三個位置的是選擇性的設定,可由3種選擇

分別是G(global symbol table)L(local symbol table)F(macro變量已存在與任一個symbol table)

CALL SYMPUT范例

在這個例子,CALL SYMPUTX被放在cards 之前,因此在每次DATA step執行的時候,CALL SYMPUTX就會執行

此程式目的在抓取最后一筆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.;

結果

The value of macro var LASTTTILE is?Everday Email Eriquette

因為資料最后一筆值是「Everday Email Eriquette」,就會被寫入put里面。

總結

以上是生活随笔為你收集整理的CALL SYMPUT与CALL SYMPUTX区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。