2016-02-25 32 views
0

有沒有辦法刪除SAS中的一組列,所有匹配一些條件語句?在這種情況下,我想刪除任何具有SUFFIX「_fix」的列SAS - 刪除或輸出列匹配條件上的條件ID

另一種方法是輸出沒有「_fix」的所有列,但這裏的主要問題是,如何對列名執行邏輯?

編輯: 我目前使用的這一點,但它不是最優雅的,我想

proc contents data= your_data_set noprint out= _data_ ; run; 
proc sql noprint ; 
select name into :list_of_cols separated by ' ' from &syslast 
where lowcase(name) like '%_flg' ; 
quit; 

然後用& list_of_cols

來源:https://communities.sas.com/t5/Base-SAS-Programming/drop-variant/td-p/71230

+1

嘛啊,你前編輯我正在寫你現在的解決方案。這是該問題的常見解決方案。另一種選擇是使用SQL來查詢dictionary.columns,但這不是更優雅(通常效率更低)。我已經看到了很多功能樣式的宏,它們從數據集中返回一個變量列表,您可以像'%put Vars以flag結尾:%varlist(data = mydatasets,suffix = _flg)'調用'。但大多數人不會考慮宏代碼的優雅。 – Quentin

+0

感謝您爲這次麻煩抱歉! :) – Wolfspirit

+0

如果您對命名約定有任何控制,SAS允許基於前綴但不包含後綴的可變快捷方式。如果您可以將其更改爲前綴,則更容易解決。 – Reeza

回答

0
proc contents data= your_data_set noprint out= _data_ ; run; 
proc sql noprint ; 

select name into :list_of_cols separated by ' ' from &syslast 
where lowcase(name) like '%_fix' ; 
quit;