Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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从包含制表符和逗号分隔符的文件中读取数据_Sas - Fatal编程技术网

SAS从包含制表符和逗号分隔符的文件中读取数据

SAS从包含制表符和逗号分隔符的文件中读取数据,sas,Sas,所以问题是制表符分隔符被定义为'09'x,逗号-“,”。我知道,如果你有冒号和逗号,可以使用多个分隔符,并将其定义为“:”,但我不知道如何定义制表符和逗号的多个分隔符。我的数据文件如下所示: AisleLevels: 14, Enroute: 10, OrderAvg: 2, PSnum: 2, PStype: 1, AisleSLots: 150, NOP: 1 Run 1 Run 2 Run 3 Run 4 Run 5 RN

所以问题是制表符分隔符被定义为'09'x,逗号-“,”。我知道,如果你有冒号和逗号,可以使用多个分隔符,并将其定义为“:”,但我不知道如何定义制表符和逗号的多个分隔符。我的数据文件如下所示:

AisleLevels: 14, Enroute: 10, OrderAvg: 2, PSnum: 2, PStype: 1, AisleSLots: 150, NOP: 1                 
    Run 1   Run 2   Run 3   Run 4   Run 5
    RN Set 1    RN Set 2    RN Set 3    RN Set 4    RN Set 5
ElevUtil    0.147   0.147   0.149   0.139   0.142
MSutil  0.186   0.186   0.189   0.174   0.182
PickUtil    0.417   0.424   0.417   0.394   0.407
TPut    668 678 666 632 649
data want;
infile datalines dlm='09'x truncover;
if _n_ = 1 then do;
input @1 str $1500.;
*(parse string with SCAN);
 Levels=scan(str,1,',');
 Enroute = scan(Str,2,','); /*etc.*/
end;
else input 
(run1-run5) $
/*....*/
;
run;

第一行用逗号分隔,其他行用制表符分隔。。谢谢大家的帮助

我不会使用多个分隔符;我会以制表符分隔的形式阅读整个内容,并分别解析第一行

大概是这样的:

AisleLevels: 14, Enroute: 10, OrderAvg: 2, PSnum: 2, PStype: 1, AisleSLots: 150, NOP: 1                 
    Run 1   Run 2   Run 3   Run 4   Run 5
    RN Set 1    RN Set 2    RN Set 3    RN Set 4    RN Set 5
ElevUtil    0.147   0.147   0.149   0.139   0.142
MSutil  0.186   0.186   0.189   0.174   0.182
PickUtil    0.417   0.424   0.417   0.394   0.407
TPut    668 678 666 632 649
data want;
infile datalines dlm='09'x truncover;
if _n_ = 1 then do;
input @1 str $1500.;
*(parse string with SCAN);
 Levels=scan(str,1,',');
 Enroute = scan(Str,2,','); /*etc.*/
end;
else input 
(run1-run5) $
/*....*/
;
run;
通常我只会在非第一行之后输出,并保留第一行变量,如果您需要的话(所有行上都有这些变量)。我也不完全理解你的格式;您真的希望从该数据中提取5行(第一行之外)?那么这是一个稍微不同的DP问题