【发布时间】:2018-11-13 07:57:59
【问题描述】:
我想了解这个程序的作用。
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 语句做什么? (为什么不说 if first.c =1 之类的话?)
3),我的理解是e是一个从0开始的累加器变量,d是迭代相加的。但由于某种原因,e 表示所有 c 值的总和,而不是 d,即使我们添加了 d。
我认为前两个问题将回答我的问题 3,但我非常感谢您的帮助。
【问题讨论】:
-
您查看过 IF 语句的文档吗?请证明您在发布问题之前已经完成了一些基础研究。
-
我了解 IF-THEN/ELSE 语句可以有条件地执行代码。我也知道 FIRST.variable 在找到该变量的第一个观察值时等于 1,否则为 0。令人困惑的是,当后面没有 THEN 或 ELSE 语句时。这就像说,我评估了最后一个变量是 1 还是 0,那又如何?
-
请添加一个创建输入数据集 B 的示例步骤,并显示您从步骤中获得的输出,并描述它与您想要的输出有何不同。一旦你有了这个例子,你就可以使用你的代码,尝试注释掉
if last.c;语句并将if first.c then e=0更改为if first.c=1 then e=0,看看它们是否/如何改变输出。也可以尝试在e+d;之后添加put (c d e)(=);
标签: sas