在SAS中执行循环跟随filevar选项

时间:2015-07-20 23:04:33

标签: sas

data &state.&sheet.;
            set di;
            retain &header.;
            infile in filevar= path end=done missover;  
            do until(done); 
                if _N_ =1 then
                    input  &headerlength.;      
                input &allvar.;
                output; 
            end;run;

变量路径在di数据集中。

我想将多个txt文件读入一个SAS数据集。在每个txt文件中,第一行是标题,我想为每个观察保留此标题,因此我使用if _N_ = 1输入标题,然后输入第二行其他变量进行分析。

输出很奇怪。只有第一行包含标题而其他行的观察结果不正确。

有人可以帮我一点吗?非常感谢你。

3 个答案:

答案 0 :(得分:0)

尝试:

core.js

答案 1 :(得分:0)

我喜欢陈胜麟的回答,但这是另一个选择:每次数据步骤开始导入新文件时,将行计数器重置为1.

data &state.&sheet.;
            set di;
            retain &header.;
            infile in filevar= path end=done missover;  
            do _N_ = 1 by 1 until(done); 
                if _N_ = 1 then input &headerlength.;      
                input &allvar.;
                output; 
            end;
run;

如果您想要对每个文件中的每第n行执行不同的操作,则更容易理解。

答案 2 :(得分:0)

您应该使用WHILE(NOT DONE)而不是UNTIL(DONE)来防止读取文件末尾,并在文件为空时停止数据步骤。或者对于文件只有标题行的一些答案。