使用infile在SAS中导入

时间:2015-03-11 08:14:28

标签: sas

filename Source 'C:\Source.txt';
Data Example;
Infile Source;
Input Var1 Var2;
Run;

有没有办法可以在没有"输入Var1 Var2"的情况下从Source.txt导入所有变量。线?如果有很多变量,我认为列出所有变量太费时了,所以我想知道是否有办法绕过它。

由于

2 个答案:

答案 0 :(得分:1)

也许你可以使用proc import?

对于CSV我使用它,我不必定义每个变量

proc import datafile="&CSVFILE"
    out=myCsvData
    dbms=dlm
    replace;
    delimiter=';';
    getnames=yes;
    run;

这取决于你的txt文件中有什么。尝试不同的分隔符。

答案 1 :(得分:0)

如果您正在查看基于INFILE语句的解决方案,那么以下参考代码应该有所帮助。

data _null_;
  set sashelp.class;
  file '/tester/sashelp_class.txt' dsd dlm='09'x;
  put name age sex weight height;
run;

/* Version #1 : When data has mixed data(numeric and character) */
data reading_data_w_format;
  infile '/tester/sashelp_class.txt' dsd dlm='09'x;
  format name $10. age 8. gender $1. weight height 8.2;
  input (name--height) (:);
run;
proc print data=reading_data_w_format;run;
proc contents data=reading_data_w_format;run;

/* Version #2 : When all data can be read a character. 
   I know this version doesn't make sense, but it's still an option*/
data reading_data_wo_format;
  infile '/tester/sashelp_class.txt' dsd dlm='09'x;
  input (var1-var5) (:$8.); /* Length would be max length of value in all the columns */
run;
proc print data=reading_data_wo_format;run;
proc contents data=reading_data_wo_format;run;

我建议写下要读取的变量的信息,以便确定该文件符合您的规范。 PROC IMPORT将尝试首先从第1行扫描数据直到GUESSINGROWS(如果每列长度一致,不设置为高)值,并根据长度和类型,它将使用它认为合适的信息和长度用于读取文件中的变量。