SAS學習筆記10 宏變量


  1. 一個宏變量存放的值保持不變直到被修改(全局變量
  2. 引用時,變量名前加上"&"
  3. 宏變量在引用時放在雙引號之間會被解讀(單引號不會被解讀)

用戶定義的宏變量,有三種方式:

  1. %let 宏變量名=宏變量值(宏變量值最大可存儲65535個字符)
  2. call symput(宏變量名,值);(這個方法只允許在data步中)
  3. proc sql

宏變量的引用

 顯示宏變量及其值

  • _GLOBAL_ :輸出用戶自定義的宏變量當中的全局宏變量信息;

  • _LOCAL_ :輸出用戶自定義的宏變量當中的局部宏變量信息;(一般用在宏內部,因為只有在宏內部才有局部的概念)

  • _READONLY_ :輸出用戶自定義的宏變量中只讀的宏變量信息,包括全局和局部的;

  • _WRITABLE_:輸出用戶自定義的宏變量中可寫的宏變量信息,包括全局和局部的;

宏變量與后續文本的分隔

 當宏變量跟后續文本緊密同時使用時,需要界定宏變量的結束位置

間接引用宏變量

“&宏變量名”是直接引用

如果引用的宏變量名是通過宏產生的,則需要間接引用,此時需要用:&&

DATA STEP

如果要在DATA STEP執行階段創建Macro Variable,就要使用執行階段生效的語句。在DATA STEP中可通過CALL SYMPUT來完成

CALL SYMPUT( macro-variable, value );
  • macro-varialbe為Macro Variable的名字,可以為引號引起來的字符串,也可以為DATA STEP中的字符變量;

  • value為Macro Variable的取值,可以為引號引起來的字符串;也可以為DATA STEP中的變量(如果是數值變量,SAS會進行一次自動轉換,將其轉換為字符串后賦給Macro Variable)

此外,還有另外一個CALL SYMPUTX也是用來在DATA STEP中創建Macro Variable。它與CALL SYMPUT的用法一模一樣,只有一個區別:

CALL SYMPUTX在給Macro Variable賦值的時候會移除Leading blanks和Trailing blanks

注意:%put語句在輸出時會移除輸出內容的Leading blanks和Trailing blanks

 PROC SQL

 SQL相比DATA步可以很快速的完成一些聚合運算。這些運算后的結果如果想要輸出到Macro Variable中,就需要用INTO子句來完成。其語法格式如下:

INTO :macro-variable-specification-1 <, :macro-variable-specification-2 ...>

特別注意,INTO子句中需要在每個創建的Macro Variable前加“:”

除了上面這種賦單值外,還可以賦多個值給某個Macro Variable,並且以指定的分隔符進行區分。例如:

%SYMDEL STATEMENT

當某個Macro Variable不再使用的時候,可以通過%symdel語句來刪除


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM