手动将csv文件的特定部分读入SAS

时间:2013-08-27 14:55:38

标签: csv sas

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

2 个答案:

答案 0 :(得分:5)

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

但是,您无法轻松读入所选列。您必须阅读所有列,直到您感兴趣的最后一列,然后删除不感兴趣的列。您可以使用名为"空白"的$ 1字符全部读取它们。或者其他东西(每次都是同名),但你必须要求它们。

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

答案 1 :(得分:1)

如果您可以使用变量名而不是列号,这将有效。我建议使用变量名而不是数字,因为它为您的代码增加了实质意义,如果输入文件列被更改,可能会帮助您解决问题。

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