使用指针控制读取SAS中的原始数据
我了解如何使用指针控件在原始数据中搜索短语,然后将值读入SAS变量。我需要知道如何告诉SAS在遇到特定短语时停止读取原始数据。 例如,在下面的代码中,我只想读取短语Start和Stop之间的数据。所以果冻不应该是输出的一部分使用指针控制读取SAS中的原始数据,sas,raw-data,Sas,Raw Data,我了解如何使用指针控件在原始数据中搜索短语,然后将值读入SAS变量。我需要知道如何告诉SAS在遇到特定短语时停止读取原始数据。 例如,在下面的代码中,我只想读取短语Start和Stop之间的数据。所以果冻不应该是输出的一部分 data work.two; input @"1" Name :$32.; datalines; Start 1 Frank 6 1 Joan 2 3 Sui Stop 1 Jelly 4 5 Jose 3 ; run; 您无法真正将这些内容合并到文件的单个过程中。问
data work.two;
input @"1" Name :$32.;
datalines;
Start 1 Frank 6
1 Joan 2
3 Sui Stop
1 Jelly 4
5 Jose 3
;
run;
您无法真正将这些内容合并到文件的单个过程中。问题是
@'1'
将跳过包含停止
的行,因此数据步骤无法看到它
预处理文件
filename copy temp;
data _null_;
file copy ;
retain start 0 ;
input ;
if index(_infile_,'Start') then start=1;
if start then put _infile_;
if index(_infile_,'Stop') then stop;
datalines;
Start 1 Frank 6
1 Joan 2
3 Sui Stop
1 Jelly 4
5 Jose 3
;
data work.two;
infile copy ;
input @"1" Name :$32. @@;
run;
您可以根据需要设置逻辑来检测源文件中要包含的部分。所有名称都是每行左侧的第二个位置,因此可以通过扫描功能获取名称,如果行中有“停止”,则停止循环
data work.two;
input @@;
Name=scan(_infile_,-2);
if indexw(_infile_,'Stop')>0 then stop;
input;
datalines;
Start 1 Frank 6
1 Joan 2
3 Sui Stop
1 Jelly 4
5 Jose 3
;
run;