2016-08-02 1 views
0

私はさまざまな国から収集されたデータを含む大きなSASデータセットraw_dataを持っています。このデータセットには、観測が開始された国を列挙する「国」という列があります。 raw_dataに各国の別の.csvファイルをエクスポートしたいと思います。私は、出力を生成するには、次のデータのステップを使用しない:SASデータステップを使用してファイルをエクスポートするときに列名が見つからない

data _null_; 
    set raw_data; 
    length fv $ 200; 
    fv = "/directory/" || strip(put(country,$32.)) || ".csv"; 
    file write filevar=fv dsd dlm=','; 
    put (_all_) (:); 
run; 

しかし、結果の.csvファイルは、もはやraw_dataから列名を持っています。私は自分のデータセットに100以上のカラムを持っているので、すべてのカラム名をリストアップするのは禁物です。誰も私に上記のコードを変更してエクスポートする.csvファイルに列名を付けるためのガイダンスを私に提供できますか?どんな助けもありがとう!

答えて

1

変数名を保持するマクロ変数を作成して、それらをCSVファイルに格納することができます。

proc sql noprint; 
select name into :var_list separated by ", " 
from sashelp.vcolumn 
where libname="WORK" and memname='RAW_DATA' 
order by varnum; 
quit; 

data _null_; 
set raw_data; 
length fv $ 200; 
by country; 
fv = "/directory/" || strip(put(country,$32.)) || ".csv"; 

if first.country then do; 
    put "&var_list"; 
end; 

file write filevar=fv dsd dlm=','; 
put (_all_) (:); 
run; 
+0

Reeza!あなたが提供したproc sqlステートメントでは、select句に手動で名前をリストする必要がありますか?私は数百の列を持っていますので、できるだけこれを自動化したいと思います。 –

+0

いいえ... SQL文が何をしているのか、それは名前のリストを作成します。 – Reeza

+0

ええと...これを実行すると、次のエラーが表示されます。「エラー:寄与するテーブルに次の列が見つかりませんでした:名前」 –

1

プログラムと非常によく似たこのデータステップを検討してください。 VNEXTを使用してPDVを照会し、各ファイルの最初のレコードとして変数名を書き込みます。

proc sort data=sashelp.class out=class; 
    by age; 
    run; 
data _null_; 
    set class; 
    by age; 
    filevar=catx('\','C:\Users\name\Documents',catx('.',age,'csv')); 
    file dummy filevar=filevar ls=256 dsd; 
    if first.age then link names; 
    put (_all_)(:); 
    return; 
names: 
    length _name_ $32; 
    call missing(_name_); 
    do while(1); 
     call vnext(_name_); 
    if _name_ eq: 'FIRST.' then leave; 
     put _name_ @; 
    end; 
    put; 
    run; 
+0

'FIRST'のテスト(期間を含む)。また、FILEVAR =およびFILEステートメントをNAMESブロックに移動します。それ以外の場合は、PUT _ALL_はFILEVARの値も書き込みます。 – Tom

+0

FIRSTに同意します。コメントをする前にプログラムをテストして答えを知らないといけません。 –

+0

テストは問題でしたが、テストではFILE文をコメントアウトして、LOGの値を確認できました。これにより、変数は\ _ALL_リストに表示されます。 – Tom

関連する問題