0

我想将以下 dat 文件读入 SAS。由于名称和值由 2 个空格分隔,因此我在输入语句中使用与号。但似乎DLM='/'infile 语句中的 in 与它冲突。有人可以告诉我代码中的错误是什么吗?

文件:

1118 ART CONTUCK  57.69/65.20/120.50//152.60
2287 MICHAEL WINSTONE  145.89

代码:

data mylib.D_report;
infile Dinning dlm='/' dsd missover;
input ID 1-4 Name & $17. M1-M6;
run;
4

2 回答 2

1

您正在混合输入样式,这虽然可以理解,因为您有相当混合的输入数据,但不允许您这样做。

您最好的选择是将 M1-6 读入一个变量,然后使用 SCAN 将其拆分。

data work.D_report;
infile datalines missover dlm=' ';
input ID :4.
      Name & $17. 
      Ms :$40.;

array M[6];
do _t = 1 to countc(Ms,'/')+1;
 if _t > dim(M) then leave;
 M[_t]=scan(Ms,_t,'/','m');
end;
datalines;
1118 ART CONTUCK  57.69/65.20/120.50//152.60
2287 MICHAEL WINSTONE  145.89
;;;;
run;
于 2013-04-06T23:05:39.900 回答
1

您只需要更改分隔符。

data D_report;
   dlm = ' ';
   infile cards dlm=dlm missover dsd;
   input ID 1-4 Name & $17. @;
   dlm = '/';
   input M1-M6;
   cards;
1118 ART CONTUCK  57.69/65.20/120.50//152.60
2287 MICHAEL WINSTONE  145.89
run;
proc print;
   run;

在此处输入图像描述

于 2015-09-29T14:11:25.163 回答