SAS:指定信息长度与列输入

时间:2014-05-27 03:23:05

标签: sas

我有以下程序可以正常工作:

data test ; 
infile datalines ; 
input emp_id 3. @4 height 2.  @6 weight 3. ; 
datalines ; 
00168155
00270200
00362102
00474180
;
run;
proc print;
run;

但是,以下程序将null的{​​{1}}值写入测试数据集,我不知道为什么

emp_id

我使用与第一种情况相同的data test ; infile datalines ; input @12 type @ ; if type=1 then input emp_id 3. @4 height 2. @6 weight 3. ; /* 1-3 instead of 3. fixes the issue */ else if type=2 then input emp_id 3. @5 height 2. @8 weight 3. ; /* 1-3 instead of 3. fixes the issue */ datalines ; 00168155 1 002 70 200 2 00362102 1 004 74 180 2 ; run; proc print ; run ; 信息,但未正确读取emp_id。为什么?


我不明白为什么信息3.在第一种情况下是完美的,但在第二种情况下则不然。我知道修复,我只需要使用3.列输入指针。

而不是1-3

需要使用if type=1 then input emp_id 3. @4 height 2. @6 weight 3. ;

为什么

1 个答案:

答案 0 :(得分:3)

因为您使用input语句来读取类型,所以指针移动到@type之后的位置,它将尝试读取类型后的emp_id。在输入和emp_id之间添加@ 1,如input @1 emp_id 3.,它将在第一个位置读取emp_id。

尝试将您的数据更改为以下内容。如果你不添加@ 1,你会看到emp_id将是99x。

datalines ; 
00168155   1 991
002 70 200 2 992
00362102   1 993
004 74 180 2 994
;