如何将前n列列读入SAS数据集?

时间:2014-05-23 23:01:05

标签: sas

我的原始数据文件是一个包含10列的简单逗号分隔文件。我知道必须有一种方法只使用missoverls导入3列?

当然,我可以导入所有文件并删除不需要的变量,但是,我该如何使用
infile missover=3

OR

infile ls=3

2 个答案:

答案 0 :(得分:1)

不,我想SAS必须读取分隔文件中的所有数据 - 它必须从头到尾读取每个字节到1)处理列分隔符,以及2)确定obs分隔符(CR& LF字符) ) - 删除不需要的列不会有很大的开销。

答案 1 :(得分:1)

如果您只需要读取前n个字段,则可以在输入语句中列出这些字段。

如果您需要的列更靠右侧,则需要在输入中列出所需的列,然后列出您需要的列。直到您需要的最后一列。

MISSOVER不接受=n并且它告诉sas转到下一条记录并开始读入输入语句的第一个变量,如果它找不到足够的列而不查找以下记录中的最后一列。

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