导入多个文本文件,并跳过在每个文件
例如我已经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来检测文件的开始,但是我无法使它工作。什么是最好的方式来做到这一点?提前致谢!
在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标志。
谢谢你的帮助。当我运行代码时,它仍会尝试读取第二个文件的标题并错过其第二行。然后成功跳过第三个文件的标题并错过了最后一行....必须有一些逻辑错误在继续。我试图解决它,但还没有成功。 –
这就是我发布未经测试的代码。尝试更正的版本。 – Tom
谢谢!这工作和解释是完全意义上的! –
EOV infile语句选项检测串联中每个新文件的开始。 –
老实说我已经尝试过,但有一个while while循环我仍然无法使它工作。 –