2016-03-21 11 views
0

私はcsvファイル(フォルダパスPath)でいっぱいのフォルダを持っています。私は選択されたファイル名のリストを含むSASデータセットNameを持っています。データセットNameは、次のようになります。SASマクロを使用して選択したファイルのリストをロードする方法

FileName 
File1 
File3 
File8 
File9 
... 

私はデータセットnamename1-name...)に記載されているすべてのファイルをロードし、同じ名前を使用して、SASデータセットとして保存します。

マクロを使用してこのプロセスを自動化する方法を教えてもらえますか。私はループを作成する方法を理解することができず、次のプロセスを1つずつ実行します。どうもありがとう。

data Name1 ; 
    infile 'Path\Name1.csv' delimiter = ',' truncover DSD lrecl=32767 firstobs=2 ; 
     informat VAR1 $25. ; 
     informat VAR2 yymmdd10. ; 
     informat VAR3 best12. ; 

     format VAR1 $25. ; 
     format VAR2 yymmdd10. ; 
     format VAR3 best12. ; 

     input 
        VAR1 $ 
        var2 
        var3 
     ; 
run; 

答えて

1
  1. (あなたは上記提供してきました)一つのファイルに正しくインポートのコードを作成します。
  2. デフォルト値の代わりにマクロ変数を使用するようにコードを変更します。

    %let name=name1; 
    
    data &name; 
    infile "Path\&name..csv" delimiter = ',' truncover DSD lrecl=32767 firstobs=2 ; 
    informat VAR1 $25. VAR2 yymmdd10. VAR3 best12. ; 
    format VAR1 $25. VAR2 yymmdd10. VAR3 best12. ; 
    
    input VAR1 $ var2 var3; 
    run; 
    
  3. パラメータ

    %macro import_file(name); 
    data &name; 
    infile "Path\&name..csv" delimiter = ',' truncover DSD lrecl=32767 firstobs=2 ; 
    informat VAR1 $25. VAR2 yymmdd10. VAR3 best12. ; 
    format VAR1 $25. VAR2 yymmdd10. VAR3 best12. ; 
    
    input VAR1 $ var2 var3; 
    run; 
    %mend; 
    
  4. 使用してマクロを実行するために、データセット内で実行される呼び出しとるマクロを作成します。

    data _null_; 
    set files; 
    str=catt('%import_file(', file_name, ');'); 
    call execute(str); 
    run;  
    
関連する問題