2016-01-13 148 views
1

例如我已经test1.txt的这样的FIRSTLINE(标题),导入多个文本文件,并跳过在每个文件

One Two Three 
1 2 3 
4 5 6 

的test2.txt这样,

One Two Three 
7 8 9 
10 11 12 

Test3的名为.txt这样的,

One Two Three 
13 14 15 
16 17 18 

什么是它们导入到SAS表,并创建这样的事情最好的办法,

One Two Three 
1 2 3 
4 5 6 
7 8 9 
10 11 12 
13 14 15 
16 17 18 

这里是我的原代码,

data want; 
    infile "text*.txt" delimiter=" " firstobs=2; 
    input One Two Three; 
run; 

只有在第一个文件的标题行由firstobs声明跳过。我可以通过编写重复代码来实现这一点,但显然这并不好。我也尝试了变量EOV来检测文件的开始,但是我无法使它工作。什么是最好的方式来做到这一点?提前致谢!

+0

EOV infile语句选项检测串联中每个新文件的开始。 –

+0

老实说我已经尝试过,但有一个while while循环我仍然无法使它工作。 –

回答

2

在INFILE语句中使用EOV选项。这是一种方法。

data want; 
    infile "text*.txt" dsd dlm='09'X truncover eov=eov firstobs=2; 
    input @; 
    if eov then input; 
    input One Two Three; 
    eov=0; 
run; 

使用FIRSTOBS=2 INFILE选择跳过第一个文件头,然后使用条件输入跳过了别人的头。在测试EOV标志之前,您需要确保通过预先读取该行来正确设置EOV标志。您需要重置数据步骤底部的EOV标志。

+0

谢谢你的帮助。当我运行代码时,它仍会尝试读取第二个文件的标题并错过其第二行。然后成功跳过第三个文件的标题并错过了最后一行....必须有一些逻辑错误在继续。我试图解决它,但还没有成功。 –

+0

这就是我发布未经测试的代码。尝试更正的版本。 – Tom

+0

谢谢!这工作和解释是完全意义上的! –

相关问题