2013-10-08 391 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

相關問題