我想測試變量是否存在,如果不存在,請創建它。測試變量是否存在
測試變量是否存在
回答
open()
& varnum()
功能可以使用。來自varnum()
的非零輸出指示變量存在。
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
set try;
if _n_ = 1 then do;
dsid=open('try');
if varnum(dsid,'var4') = 0 then var4 = .;
rc=close(dsid);
end;
drop rc dsid;
run;
使用open()函數打開數據集後,請不要忘記關閉()你的數據集。 – cmjohns 2011-04-16 15:53:53
這裏沒有必要打開varnum和varnum嗎?難道你不能說「數據try2; var4 = .; set try;」。在給出的例子中,它會在每次迭代時做開放和varnum,而不是很不情願,所以它們至少應該被「if _N_ = 1 then」所保護。 – 2011-04-19 16:09:19
我需要測試var4是否存在,以便保存它的內容。擬議的數據try2; VAR4 = .;設置嘗試;'會覆蓋預先存在的變量中的任何數據。 – Murray 2011-06-01 05:23:09
data try2;
set try;
var4 = coalesce(var4,.);
run;
(假設VAR4是數字)
var4
分配到其自身。如果該分配不存在,該分配將創建該變量,如果該分配存在,則將該內容留在原地。
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
set try;
var4 = var4;
run;
請記住,創造var4
這樣,當它不存在將使用默認的屬性變量,所以你可能需要,如果你需要特定的格式/長度等使用顯式聲明attrib
這是一個非常晚的答案/評論,但是這種方法適用於我,而且非常簡單(SAS 9.4)。在下面的例子中,我使用了缺失的數字和字符變量,併爲缺少的字符變量賦值。
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
length var4 $20;
length var5 8;
set try;
var4 = var4;
if var4 = ' ' then var4 = 'Not on Source File';
run;
這與AndyBean的回答相同。 – Snorex 2016-08-30 23:24:24
如果Muray希望得到輸入變量的變量不存在的信息,那麼不應該這樣做! – 2017-04-19 08:46:55
- 1. 函數測試變量是否存在
- 2. JMS選擇器測試變量是否存在?
- 3. 如何測試變量是否存在並已初始化
- 4. JSP:測試是否存在來自pageContext.findAttribute(「」)的變量
- 5. 測試變量是否可序列化
- 6. Actionscript3:變量是否存在?
- 7. 測試單元測試是否存在保存方法
- 8. JavaScript即使在我測試變量是否存在時也會破解
- 9. JavaScript:測試未定義值的變量;測試物體是否是陣列
- 10. 如何測試一個變量是否存在於ColdFusion結構中?
- 11. 測試數據值是否存在於按POSIX日期分組的變量中
- 12. 測試兩個變量是否等於一個變量在PHP的if語句
- 13. 給定兩個變量,測試其他變量是否在它們之間
- 14. 測試是否存在註冊表值
- 15. 測試一個目錄是否存在
- 16. PHP測試是否存在操作符?
- 17. Python測試是否存在對象
- 18. 你可以測試mixin是否存在?
- 19. 測試相關模型是否存在
- 20. 測試是否已經存在
- 21. iphone - 測試對象是否存在
- 22. SQLite測試是否存在記錄
- 23. 測試對象是否存在?
- 24. 測試類中是否存在字段
- 25. 要測試是否存在gmail帳戶
- 26. SSI - 測試文件是否存在
- 27. 增強測試套件是否存在?
- 28. 測試文件是否存在
- 29. xslt測試是否存在屬性
- 30. 使用OCUnit測試是否存在UIAlertView
您無法在DATA步驟中真正有條件地創建變量。也許你想編寫代碼來檢查一個數據集是否有一個特定的變量,如果不使用DATA步驟來創建一個新的數據集版本來添加所需的列並給它一些合理的默認值? – 2011-04-19 16:12:03
如果輸入數據不符合規格,更好的解決方案可能是「中止」。 – StasK 2015-10-23 15:34:33