Sas 不使用FIRSTOBS读取特定数据=
有没有一种方法可以在不使用FIRSTOBS=的情况下读取数据的特定部分?例如,我有5个不同的文件,所有这些文件都有几行不需要的字符。我希望从第一行数字开始读取数据。但这5个文件中的每一个都有从不同行开始的第一个数字行。与其深入每个文件查找FIRSTOBS应该在哪里,有没有办法让我检查一下?也许通过使用带有ANYDIGIT的IF语句?您从SAS文档中尝试过类似的方法吗Sas 不使用FIRSTOBS读取特定数据=,sas,Sas,有没有一种方法可以在不使用FIRSTOBS=的情况下读取数据的特定部分?例如,我有5个不同的文件,所有这些文件都有几行不需要的字符。我希望从第一行数字开始读取数据。但这5个文件中的每一个都有从不同行开始的第一个数字行。与其深入每个文件查找FIRSTOBS应该在哪里,有没有办法让我检查一下?也许通过使用带有ANYDIGIT的IF语句?您从SAS文档中尝试过类似的方法吗 数据办公室(drop=x); 填充文件规范; 输入x@; 如果1,则假定您不知道每个文件开头要跳过多少行。我的fileref是UN
数据办公室(drop=x);
填充文件规范;
输入x@;
如果1,则假定您不知道每个文件开头要跳过多少行。我的fileref是UNIX,要在另一个操作系统上运行该示例,它们需要更改
*Create two example input data files;
filename FT15F001 '~/file1.txt';
parmcards;
char
char and 103
10 10 10
10 10 10.1
;;;;
run;
filename FT15F001 '~/file2.txt';
parmcards;
char
char and 103
char
char
char
10 10 10.5
10 10 10
;;;;
run;
*Read them starting from the first line that has all numbers;
filename FT77F001 '~/file*.txt';
data both;
infile FT77F001 eov=eov;
input @;
/*Reset the flag at the start of each new file*/
if _n_ eq 1 or eov then do;
eov=0;
flag=1;
end;
if flag then do;
if anyalpha(_infile_) then delete;
else flag=0;
end;
input v1-v3;
drop flag;
retain flag;
run;
proc print;
run;
我最后做了:
INPUT City $@;
StateAvg = input(substr(City,1,4),COMMA4.);
IF 5000<= StateAvg <= 7000 THEN
INPUT City 1-7 State ZIP;
ELSE DO;
Delete;
END;
输入城市$@;
StateAvg=输入(substr(城市,1,4),COMMA4.);
如果5000
INPUT City $@;
StateAvg = input(substr(City,1,4),COMMA4.);
IF 5000<= StateAvg <= 7000 THEN
INPUT City 1-7 State ZIP;
ELSE DO;
Delete;
END;