DATA Step, Macro, Functions and more

Reading multiple files

Accepted Solution Solved
Reply
Contributor
Posts: 44
Accepted Solution

Reading multiple files

I'm trying to read multiple files into a dataset but I'm struggling to find the "best" way to do this.  I know that you can't use macro variables inside a datalines statement but I want to be able to specify the directory from which I am reading at the top.  This example illustrated what I am trying to do.  Can anyone suggest how I might do this?

%Let srcdir=c:\foo;

%Let basename=bar;

Data One;

   Infile Datalines;

   Length EggFile $152;

   Input EggFile $;

   Infile dummy FileVar=EggFile end=done;

   Do While(not done);

      Input this 1-2 that 4;

      Output;

   End;

   Datalines;

      "&srcdir\&basename.27.Dat"

      "&srcdir\&basename.28.Dat"

      "&srcdir\&basename.29.Dat"

      "&srcdir\&basename.30.Dat"

      "&srcdir\&basename.31.Dat"

      "&srcdir\&basename.32.Dat"

      "&srcdir\&basename.33.Dat"

      "&srcdir\&basename.34.Dat"

Run;


Accepted Solutions
Solution
‎08-14-2012 11:52 AM
Valued Guide
Posts: 797

Re: Reading multiple files

If this is a specific list of files, why not take them out of the DATALINEs statement and put them in a FILENAME statement?  Something like:

filename mylist ("&srcdir\&basename.27.Dat","&srcdir\&basename.28.Dat"

      ,"&srcdir\&basename.29.Dat","&srcdir\&basename.30.Dat"

      ,"&srcdir\&basename.31.Dat","&srcdir\&basename.32.Dat"

      ,"&srcdir\&basename.33.Dat","&srcdir\&basename.34.Dat");

data want;

  infile mylist;

  input this 1-2  that 4;

run;

View solution in original post


All Replies
Solution
‎08-14-2012 11:52 AM
Valued Guide
Posts: 797

Re: Reading multiple files

If this is a specific list of files, why not take them out of the DATALINEs statement and put them in a FILENAME statement?  Something like:

filename mylist ("&srcdir\&basename.27.Dat","&srcdir\&basename.28.Dat"

      ,"&srcdir\&basename.29.Dat","&srcdir\&basename.30.Dat"

      ,"&srcdir\&basename.31.Dat","&srcdir\&basename.32.Dat"

      ,"&srcdir\&basename.33.Dat","&srcdir\&basename.34.Dat");

data want;

  infile mylist;

  input this 1-2  that 4;

run;

Super User
Posts: 10,487

Re: Reading multiple files

If you want to read all of the DAT files in one directory

filename mylist "&srcdir.\*.dat";

Super User
Posts: 9,676

Re: Reading multiple files

You don't need to put macro into DATALINES actually.

%Let srcdir=c:\foo;

%Let basename=bar;

Data One;

   Infile Datalines;

   Length EggFile $152;

   Input EggFile $;

  EggFile="&srcdir"||"\"||"&basename"||EggFile ;

   Infile dummy FileVar=EggFile end=done;

   Do While(not done);

      Input this 1-2 that 4;

      Output;

   End;

   Datalines;

      27.Dat

     28.Dat

  ;

Run;

Ksharp

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 236 views
  • 0 likes
  • 4 in conversation