SAS巨集中 if else和if else的區別

2021-10-05 23:43:46 字數 1137 閱讀 2819

sas巨集中%if%else和if else的區別

data a;

set x;

%do m=1 %to 3;

%do q=1 %to 5;

if x&q^="nan" and &m=id and x&q="&&id&m&q" then do;

&&id&m&q=1;

put '有值 且id相等' id= x&q= &&id&m&q=;

上面**是正常的if else語句,它可以把變數轉變成數值,就是說x&q可以代表x1-x5,但是if語句是把變數解讀成值,即id=1時x1=『張三』,字串張三。

可以了看到x&q^=「nan」,沒有x變數等於nan的。說明if語句把變數解讀成了值。

接下來看%if**。

%do m=1 %to 3;

%do q=1 %to 5;

%if x&q=nan %then %do;

&&id&m&q=1;

put '有值 且id相等' id= x&q= &&id&m&q=;

%end;

這段語句執行沒有列印任何內容。

data a;

set x;

%do m=1 %to 3;

%do q=1 %to 5;

%if x&q=x1 %then %do;

&&id&m&q=1;

put '有值 且id相等' id= x&q= &&id&m&q=;

%end;

這段**執行,有結果。說明%if語句將x&q解讀成x1文字,並不會將x1的值解讀出來。且巨集if語句中不需要用「」區別字串,巨集if語句中所代表的內容,全部都是字面意義的字串,沒有data步變數存在。只能有巨集變數。

sas中巨集變數 建立方式及區別

方式一 let x 5 let y test put x y 方式二 data null call symput x 5 call symput y test run put x y 方式三 若有多條記錄,只取第一條的值 proc sql noprint select min weight max ...

verilog中if else和case的比較

比較if else if else和case 1 if a 2 b00 語句1 else if a 2 b01 語句2 else 語句3 case a 2 b00 語句1 2 b01 語句2 default 語句3 endcase 在這種情況下,判斷條件中只有乙個能滿足,不管先判斷哪個條件,都不影響...

SAS驅動中PHY和PORT的介紹

v0.1 20170412 felix init 這篇文件是基於核心linux v4.10,hisi sas驅動,介紹phy,port,及其之間的關係。phy層定義了8b10b編碼和解碼方式 組成dwords oob訊號 phy reset以及速率協商等過程。phy層的主要作用是實現phy rese...