2011-12-19 32 views
1

私は以下のcsvファイルを持っており、それらをSASデータセットに読み込む必要があります。 また、列名を割り当てる必要があります。 さらに、列は数字である必要がありますが、列の中には数値と文字の両方の値があります。複数のcsvファイルをSASデータセットに読み込む

フォルダAA:abc1.csv、abc2.csv、abc3.csv、...... フォルダBB:abc1.csv、abc2.csv、abc3.csv、...... フォルダのcc :abc1.csv、abc2.csv、abc3.csv、......

+0

あなたはCSVファイルのn個の数を含むフォルダのn個の数を持っていますか?あなたはUnix、Windows、メインフレームですか? –

+0

はい、n個のcsvファイルを含むn個のフォルダがあります。私はWindows上にいる。私はSASの初心者であり、本当にこの問題に悩まされています。どうもありがとう! – user1106772

+0

「列を数値にする必要がある」とはどういう意味ですか?文字値は数値として格納できません。 – itzy

答えて

1

これは完全な回答ではありませんが、開始されます。ファイルを取得したい別のディレクトリを通過するために外部ループを追加する必要があります。

/*List the files in a directory for use in a data step. This is written for Windows. Other operating systems will be slightly different. */ 
filename fnames pipe 'dir c:\temp\* /b'; 

/* Create a data set with one observation for each file name */ 
data fnames; 
    infile fnames pad missover; 
    input @1 filename $255.; 
    n=_n_; 
run; 

/* Store the number of files in a macro variable "num" */ 
proc sql noprint; select count(filename) into :num; quit; 

/* Create a macro to iterate over the filenames, read them in, and append to a data set. */ 
%macro doit; 
    %do i=1 %to # 

     proc sql noprint; 
      select filename into :filename from fnames where n=&i; 
     quit; 

     data ds; 
      infile &filename; 
      input ...list of variable names...; 
      ...other statements...; 
     run; 

     proc append data=ds base=final; run; 
    %end; 
%mend; 

%doit; 
+0

ありがとう、itzy!しかし、私はまだ把握しようとしています。本当にSASには新鮮です。 – user1106772

2

次のようにすることもできます。

  1. すべてのファイルを1つのフォルダに保存します。
  2. これらのすべてを1列のcsvファイルに指定します。
  3. ファイル名を持つファイル(csv)をSASにインポートします。
  4. "into"節で名前を保持するマクロを作成します。

    proc sql; 
    select name_list into :name separated by '*' from work.name; 
    %let count2 = &sqlobs; 
    quit; 
    
  5. 以下のようなマクロを作成します。

    %macro yy; 
    %do i = 1 %to &count2; 
    %let j = %scan(&name,&i,*); 
    proc import out = &j datafile="folderwhereallcsvfilesarekept\&j..csv" 
    dbms=csv replace; 
    getnames = yes; 
    run; 
    %end; 
    %mend; 
    
関連する問題