Elvis
Elvis

Reputation: 255

How to read first n number of columns into a SAS dataset?

My raw datafiles is a simple comma delimited file that contains 10 columns. I know there must be a way of importing only 'say 3 columns using missover OR ls ?

Sure, I can import all file and drop uneeded varialbes, however, how can I use
infile missover=3

OR

infile ls=3

?

Upvotes: 0

Views: 720

Answers (2)

user3645882
user3645882

Reputation: 739

If you need to read only the first n fields you can just list those in your input statement.

If the columns you need are more to the right you will need to list in your input all the columns before those you need and up to the last column you need.

MISSOVER does not take =n and it tells sas to go to the next record and start reading into the first variable of the input statement if it doesn't find enough columns and not look for the last columns in the following record.

e.g

file is like this

 a1,b1,c1
 a2,b2,c3,d2

data test;
   infile "myfile" dlm="," dsd /*2 cosecutive delimiters are not considered as one*/ missover;
        input
        a $
        b $
        c $
        d $
        ;
    run;

will result in a dataset:
a  b  c  d
a1 b1 c1
a2 b2 c2 d2

    data test;
    infile "myfile" dlm="," dsd /*2 cosecutive delimiters are not considered as one*/ ;
    input
    a $
    b $
    c $
    d $
    ;
    run;

will result in a dataset:
a  b  c  d
a1 b1 c1 a2

Upvotes: 1

Dog Ears
Dog Ears

Reputation: 10005

No, I guess as SAS has to read all the data from a delimited file - it has to read every byte from beginning to end to 1) process the column delimiters, and 2) determine the obs delimiters (CR&LF characters) - DROPing the unneeded columns wouldn't be much of an overhead.

Upvotes: 1

Related Questions