2013-10-08 342 views
1
data whatever; 
infile ''; 
input price cost; 
<statement>; 
run; 

<statement>,使用total = sum(total,cost)total = total + cost有什么区别?总和和+之间的差异?

+0

你的意思'总=总+费用;'或'总+费用;'作为第二个选择? – Joe

+0

我想创建一个运行总数。它不是'变量+表达式'吗? – zhuoer

+0

它是;只是想澄清你打算做什么(因为你没有在问题中解释)。 – Joe

回答

2

的differnce可以看到下面。

总=总和(总的,成本)/ *其总和函数*/

总+成本/ *其总和的语句,该形式是可变+表达*/

这里:

“total”指定累加器变量的名称,其中包含一个数值。

1)在SAS读取第一个观察值之前,变量(本例中为总数)自动设置为0。该变量的值从一次迭代保留到下一次迭代,就好像它出现在RETAIN语句中一样。

2)要将sum变量初始化为0以外的值,请将其包含在具有初始值的RETAIN语句中。

“费用”是计算表达式的表达式

1),并添加到累加器变量的结果。 2)SAS将产生缺失值的表达式视为零。

sum语句与sum函数的不同之处在于sum语句保留了它先前计算的值。

然而, 总和声明等同于使用SUM函数和RETAIN声明,如下所示:

retain total 0; 
total=sum(total,cost); 
+0

谢谢你的详细解释。 – zhuoer

+0

非常欢迎,但理想情况下,主题标题应该是“总和声明”和“总和函数”之间的差异,但是+1很适合提出这个问题。 – PKumar

2

如果您真的在input声明之后包含它,您可能会遇到任何一种问题。

的信息ProgramFOX发布是正确的,但如果你问这三个语句之间的差异,还有更多了一点:

total = sum(total,cost); 
total + cost; 

其次这些意味着retain total;声明,也将零值视为零。你碰上空问题,当你使用这种类型的表达式:

如果要计算累计总,你应该使用和声明:

total = total + cost; 
+0

在'input'语句之后使用它们有什么问题? – Joe

+0

好点,乔。我猜想我正在想象编写'datalines'后的代码。 – Jeff

相关问题