2013-08-27 57 views
2

我想将一个csv文件读入SAS,但我只想读取部分文件。 例如,我希望我的第一行数据从第18行开始,而我想阅读第9,11,12,13,19,20,36列。有没有一种在数据中手动执行此操作的有效方法步骤来阅读我想要的文件部分,或者我最好的办法就是使用导入向导来阅读整个文件,并保留欲望列?手动读取一个csv文件的特定部分到SAS

+1

这显然是不可伸缩的,但是,你为什么不只是使用Excel和删除你不想要的行,只是你想要的列复制到新的CSV然后导入 – scott

+0

我知道那是最快的方法,但我只是想知道是否可以手动做到这一点。 – user27008

回答

5

您可以通过PROC IMPORT上的DATAROW选项或数据步骤输入上的FIRSTOBS选项更改开始的行。

但是,您不能轻松阅读仅选择列。您必须阅读所有列,直到您感兴趣的最后一列,然后放弃不感兴趣的列。你可以用一个叫做“空白”的$ 1字符或其他东西(每次甚至是同一个名字)来读取它们,但是你必须要求它们。

唯一的解决方法是编写一个正则表达式来读取数据,在这种情况下,您可以告诉它为每个跳过的列寻找,.*?,.*?,等。

1

如果您可以使用变量名称而不是列号,这将起作用。我推荐使用变量名称而不是数字,因为它为您的代码增加了实质意义,并且可以帮助您在输入文件列发生更改时发现问题。

PROC IMPORT datafile = "filename.csv" 
    out = data_read (keep = var1 var2 var3) 
    dbms = csv 
    replace; 
    datarow = 18; 
RUN;