[英]Macro variable generating a space while creating a macro variable in Proc SQL
我正在創建一個宏變量但是當我在Proc Report中使用相同的宏變量時,這個宏會在值前面生成一個空格
選擇COUNT(DISTINCT USUBJID)為:來自DMDD的N1,其中ARMN = 1; 我如何在相同的代碼中糾正它?
這實際上是為PROC SQL SELECT INTO“按設計工作”。 雖然所有其他答案在某些方面都是正確的,但這是一個特殊情況,而不是普通的宏變量,例如
%let var= 5 ;
%put [&var];
只會返回的地方
[5]
雖然這不是那樣做的。 這是PROC SQL SELECT INTO
的行為,是故意的。
這兩個陳述:
proc sql;
select name into :name from sashelp.class where name='Alfred';
select name into :shortname separated by ' ' from sashelp.class where name='Alfred';
quit;
%put `&name` `&shortname`;
是不一樣的。 separated by ' '
(或任何其他分隔的)分隔將始終自動修剪,除非包含notrim
,如果你有9.3或更新,你有一個新選項, trimmed
,如果你打算選擇一個變量,你可以使用。 我認為這種行為是在9.2中引入的(默認情況下,非修剪選擇沒有分隔符)。
如果您只選擇單個值,則以separated by ' '
添加將不會影響您的結果,除非導致修剪。
這是因為任何宏變量都存儲為字符。 如果源數據是數字,則SAS使用best12。 格式轉換為字符,因此結果填充前導空格。 我通過使用CATS功能來消除前導和尾隨空白。 您不能使用LEFT或STRIP函數,因為它們只能用於字符變量。
Select cats(COUNT(DISTINCT USUBJID)) into: N1 from DMDD where ARMN=1;
Select trim(put(COUNT(DISTINCT USUBJID), 16. -L)) into: N1 from DMDD where ARMN=1;
使用PUT()使用-L(左)對齊格式化輸出字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.