missover语句下面我有数据集使用在SAS
data ab;
infile cards missover;
input m p c;
cards;
1,2,3
4,5,
6,7,
run;
此查询的输出
m p c
. . .
. . .
. . .
为什么我得到下面的输出,而不是错误的? 我还没有指定任何分隔符。 请解释。
由于事先 Nikhila
missover语句下面我有数据集使用在SAS
data ab;
infile cards missover;
input m p c;
cards;
1,2,3
4,5,
6,7,
run;
此查询的输出
m p c
. . .
. . .
. . .
为什么我得到下面的输出,而不是错误的? 我还没有指定任何分隔符。 请解释。
由于事先 Nikhila
你得到无效数据消息。 SAS缺省为空格分隔的字段,您需要指定DSD INFILE语句选项或DLM =','。您实际上并不需要MISSOVER,因为您有三个用逗号分隔的字段的正确数量的分隔符,但我可能会继续并保留它。
24 data ab;
25 infile cards missover;
26 input m p c;
27 cards;
NOTE: Invalid data for m in line 28 1-5.
RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0
28 1,2,3
m=. p=. c=. _ERROR_=1 _N_=1
NOTE: Invalid data for m in line 29 1-4.
29 4,5,
m=. p=. c=. _ERROR_=1 _N_=2
NOTE: Invalid data for m in line 30 1-4.
30 6,7,
m=. p=. c=. _ERROR_=1 _N_=3
NOTE: The data set WORK.AB has 3 observations and 3 variables.
24 data ab;
25 infile cards dsd missover;
26 input m p c;
27 cards;
NOTE: The data set WORK.AB has 3 observations and 3 variables.
该MISSOVER是什么让你有三个意见,而不是一个。如果没有MISSOVER,那么SAS将尝试将每行读取为一个值,并且最终只能观察到所有缺失值。如果将变量更改为字符而不是数字,则会更容易,因为您可以看到值的最终位置。
data ab;
infile cards missover;
input m $ p $ c $;
put (m p c) (=);
cards;
1,2,3
4,5,
6,7,
;
m=1,2,3 p= c=
m=4,5, p= c=
m=6,7, p= c=
data ab;
infile cards /*missover */;
input m $ p $ c $;
put (m p c) (=);
cards;
1,2,3
4,5,
6,7,
;
m=1,2,3 p=4,5, c=6,7,
NOTE: SAS went to a new line when INPUT statement reached past the end of a line.