misshover语句在SAS中的应用

misshover语句在SAS中的应用,sas,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,因为对于三个逗

我有以下数据集

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.

失误让你有三次观察,而不是一次。如果没有漏判,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.