为什么输出数据行向下移动一个单元?

时间:2014-06-08 09:29:48

标签: sas

我正在使用最简单的程序来找到所有分数的平均值,从而消除最低分数。

data new;
low1=smallest(1,score_1-score_6);
low2=smallest(2,score_1-score_6);
tot=score_1+score_2+score_3+score_4+score_5+score_6;
avg=(tot-low1-low2)/4;
set mydata;
run;

'mydata'在输出表中不包含任何缺失值,数据向下移动一个单元格。 输出看起来像dis

id low1 score_1 score_2 score_3 score_4 score_5 score_6 low2 tot avg

1    .    0       0     10        80        0      75     .      .     .
2    0    0       0     0          75      80      0      0     165   41.25
3    0    0       50     10        60      55      0      0     155   38.25
4...and so on

sas会生成如下注释: 注意:由于对缺失值执行操作而生成缺失值

我无法理解为什么计算值会在第2行打印而不是从第1行开始? 帮助将不胜感激。谢谢你!

1 个答案:

答案 0 :(得分:1)

将SET语句放在DATA语句之后(我认为通常是一个好主意)。正如你所知,第一行是试图创建一个变量,但没有任何数据;数据仅在最后读取。