2

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

4

2 回答 2

5

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

但是,您不能轻松地仅读取选定的列。您必须阅读所有列,直到您感兴趣的最后一列,然后删除不感兴趣的列。您可以使用名为“空白”的 $1 字符或其他名称(甚至每次都使用相同的名称)将它们全部读入,但您必须要求它们。

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

于 2013-08-27T15:14:50.497 回答
1

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

PROC IMPORT datafile = "filename.csv"
    out = data_read (keep = var1 var2 var3)
    dbms = csv
    replace;
    datarow = 18;
RUN;
于 2013-08-27T18:52:04.827 回答