我试图了解该程序的作用。
data a;
set b (keep=c d);
by c;
if first.c then e=0;
e+d;
if last.c;
run;
以下使我感到困惑的地方。
1),当没有THEN语句时,IF语句做什么?
2),当没有值求值时,IF语句会做什么? (为什么它不会说诸如first.c = 1?)
3),我的理解是e是一个从0开始的累加器变量,而d是通过迭代添加的。但是由于某种原因,即使我们将d相加,e仍代表c的所有值的总和。
我认为前两个问题将回答我的问题3,但我非常感谢您的帮助。
答案 0 :(得分:1)
在SAS中,有两个不同的if
语句-if-then-else
和子集if
。它们具有相似的语法,但是它们执行不同的操作。您的代码中每个都有一个。
这是documentation中的解释:
子集IF语句等效于此IF-THEN语句:
如果不是(表达式),则删除;
答案 1 :(得分:1)
如果没有THEN子句,则IF语句是子设置语句。基本上,如果条件不成立,则数据步骤的当前迭代将停止,控制权将返回顶部以处理下一个观察值。
SAS评估任何不为零或缺失为真的值。自动优先。和最后。使用BY语句时生成的变量的值将为1(true)或0(false)。首先。在首次观察BY组和LAST时,变量将为true。在最后一次观察BY组时,变量将为true。
您的数据步骤是获取每个C值的D值之和。