Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 不使用FIRSTOBS读取特定数据=_Sas - Fatal编程技术网

Sas 不使用FIRSTOBS读取特定数据=

Sas 不使用FIRSTOBS读取特定数据=,sas,Sas,有没有一种方法可以在不使用FIRSTOBS=的情况下读取数据的特定部分?例如,我有5个不同的文件,所有这些文件都有几行不需要的字符。我希望从第一行数字开始读取数据。但这5个文件中的每一个都有从不同行开始的第一个数字行。与其深入每个文件查找FIRSTOBS应该在哪里,有没有办法让我检查一下?也许通过使用带有ANYDIGIT的IF语句?您从SAS文档中尝试过类似的方法吗 数据办公室(drop=x); 填充文件规范; 输入x@; 如果1,则假定您不知道每个文件开头要跳过多少行。我的fileref是UN

有没有一种方法可以在不使用FIRSTOBS=的情况下读取数据的特定部分?例如,我有5个不同的文件,所有这些文件都有几行不需要的字符。我希望从第一行数字开始读取数据。但这5个文件中的每一个都有从不同行开始的第一个数字行。与其深入每个文件查找FIRSTOBS应该在哪里,有没有办法让我检查一下?也许通过使用带有ANYDIGIT的IF语句?

您从SAS文档中尝试过类似的方法吗

数据办公室(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;