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

手动将csv文件的特定部分读入SAS,csv,sas,Csv,Sas,我想将csv文件读入SAS,但我只想读入文件的一部分。 例如,我希望我的第一行数据从第18行开始,而我希望在第9、11、12、13、19、20、36列中读取。是否有一种有效的方法可以在数据步骤中手动读取我想要的文件部分,或者我的最佳选择是使用导入向导读取整个文件并保留所需的列?您可以在PROC import上更改以DATAROW选项开头的行,或数据步骤输入上的FIRSTOBS选项 但是,您无法仅在选择列中轻松读取。你必须阅读所有的栏目,直到你感兴趣的最后一个栏目,然后去掉那些不感兴趣的栏目。你可

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

您可以在PROC import上更改以
DATAROW
选项开头的行,或数据步骤输入上的
FIRSTOBS
选项

但是,您无法仅在选择列中轻松读取。你必须阅读所有的栏目,直到你感兴趣的最后一个栏目,然后去掉那些不感兴趣的栏目。你可以用一个名为“blank”的$1字符或其他什么东西(每次都用相同的名字)把它们全部读入,但你必须要它们


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

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

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

这显然是不可伸缩的,但是,为什么不使用excel删除不需要的行,将需要的列复制到一个新的csv中,然后导入我知道这是最快的方式,但我只是想知道是否可以手动执行。