在某些平台上读取而不是在其他平台上读取sas中的数据

时间:2018-12-14 21:43:16

标签: sas delimiter

即使此代码在Windows的SAS 9.4上也可以运行,为什么该代码在SAS University Edition中不起作用?

DATA HealthPlan;
  INFILE DATALINES FIRSTOBS = 2;
  INPUT Department :$10. HealthPlan $; 
  DATALINES;
Department  HealthPlan
Accounting  A
Food    A
Security    B
;
RUN;

似乎使用了分隔符。如果我添加DLM = '09'x,则它将在University Edition上运行,但否则,我的日志文件的输出如下:

 1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 72         
 73         DATA HealthPlan;
 74           INFILE DATALINES FIRSTOBS = 2;
 75           INPUT Department :$10. HealthPlan $;
 76           DATALINES;

 NOTE: LOST CARD.
 RULE:      ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0                     
 81         ;
 Department=SecurityB HealthPlan=  _ERROR_=1 _N_=2
 NOTE: SAS went to a new line when INPUT statement reached past the end of a line.
 NOTE: The data set WORK.HEALTHPLAN has 1 observations and 2 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       cpu time            0.01 seconds


 81         ;
 82         RUN;
 83         
 84         OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 97         

编码有问题吗?

3 个答案:

答案 0 :(得分:1)

因为SAS / Studio编辑器不够聪明,无法在将代码传递给SAS执行之前用空格替换制表符。

您真的不应该在SAS程序中添加标签,而且绝对不要放在行内数据的中间。

如果由于您粘贴了从Excel复制的单元格而使选项卡进入数据行,那么如果您更改SAS / Studio中的编辑器首选项设置以将选项卡替换为空格,则在粘贴到编辑器中时这些选项卡将被替换。 / p>

答案 1 :(得分:0)

可能与所写代码的行尾有关。 在linux中有LF(换行),而在Windows中则有CRLF(回车和换行)。如果您共享完全相同的代码,则可能会被误解。 也许只是在某些编辑器中查看显示不可打印字符的代码。

读取/写入文件时,相关的SAS选项为TERMSTR option,但是不适用于数据线。

答案 2 :(得分:0)

尝试使用EXPANDTABS INFILE语句选项。之所以有时可行,是因为某些编辑器在您提交其他选项卡时却扩展了选项卡。