2016-10-21 24 views
1

私は、作業ライブラリの下でいくつかのデータセット(その名前はdata_AXPM061203900_20120104、data_AXPM061203900_20120105、data_AXPA061204100_20120103、data_AXPA061204100_20120104などの特定の順序に従います)を変更しようとしています。たとえば、すべてのデータセットで変数 "price = 0"を削除したいとします。それは完全に、しかしSAS - マクロを使用して複数のデータセットを変更するにはどうすればよいですか?

%macro test; 
    proc sql ; 
    select count(memname) into: obs from data.mytables; 

    %let obs=&obs.; 
    select catx("_", "data", substr(memname, 6, 13), substr(memname,20,27)) 
    into :setname1-:setname&obs. 
    from data.mytables; 
quit; 


%do i=1 %to &obs.; 

data &&setname&i 
set &&setname&i 

if bid_price= '.' then delete; 
%end; 
%mend test; 

:、私はマクロを使用しようとしている次のステップのために

proc sql ; 
     create table data.mytables as 
     select * 
     from dictionary.tables 
     where libname = 'WORK' 
     order by memname ; 
     quit ; 

私は、データセットを識別するために、テーブルを作成するには、以下の使用しています失敗しました。誰も私にいくつかの提案を与えることができますか?私は本当にマクロがうまくいきません。エラーには、次のものが含まれます。

  1. 56:LINEとCOLUMNは特定できません。
  2. エラー56-185:DATASTMTCHK = COREKEYWORDSオプションが設定されている場合、DATA文でSETは使用できません。 DATAステートメントの にセミコロンがないかチェックするか、DATASTMTCHK = NONEを使用します。

答えて

1

DATAステートメントとSETステートメントにセミコロンがないため、おそらくRUNステートメントを追加する必要があります。試してみてください:

DELETE文は、変数を削除するのではなく、レコードを削除することです。上記のコードでは、bid_priceは文字変数であり、値が '。'のときにレコードを削除すると想定しています。

+0

'SET'ではなく' MODIFY'文はどうですか? – fl0r3k

+0

私はを試しましたが、動作しません – Neal801

関連する問題