我有以下程序可以正常工作:
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. ;
为什么
答案 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
;