2014-09-23 97 views
2
totalSUPPLY= sum(of supply1-supply485); 

我已經通過一個簡單的計算(在SAS中)從一個我換了換的表(因此變量名)。我必須多次這樣做,並且每次計算的供應變量數量都不相同。即在上面的例子中,它的485,但我稍後在我的分析和350.變量列表中的通配符

這樣做我的問題:是否有一種'通配符''供應'列的數量的方法。基本上,我想這樣的東西(但這不起作用):totalSUPPLY= sum(of supply1-supply%);

此外:如果有一個更簡單的方法做相同的Im打開(實際上會更喜歡)。

謝謝大家!

+0

爲什麼這個問題上的[tag:sql]標籤? – Joe 2014-09-23 19:12:24

+0

我把SQL標籤放在了,因爲我認爲有SAS和SQL經驗的人也許能解決我的小問題。 – Rainmaker 2014-09-24 19:08:48

+0

請不要添加[tag:sql],除非你問一個特別包含sql語言的問題;這很令人困惑,另外它還會導致[tag:sql]顯示爲谷歌搜索結果中的標籤(因爲它採用更受歡迎的標籤)。如果這是一個SAS問題,一個SQL-but-not-SAS人不能回答,請不要包含它。 – Joe 2014-09-24 21:38:33

回答

2
data yoursummary; 
    set yourdata; /*dataset containing supply1-supply485*/ 
    array supplies{*} supply:; 
    totalSUPPLY = sum(of supplies{*}); 
run; 

N.B.使用這樣的:通配符只會選擇在創建數組時出現在PDV中的匹配變量,所以數組定義必須位於set語句之後。此外,它只適用於具有通用前綴的變量,而不適用於具有通用後綴的變量。

喬指出,下面的更簡潔的代碼也可以工作:

data yoursummary; 
    set yourdata; /*dataset containing supply1-supply485*/ 
    totalSUPPLY = sum(of supplies:); 
run; 

當然,如果你聲明數組它是那麼容易做相關的事情如檢查多少變量被加到一起,或循環訪問數組中的變量並依次將相同的邏輯應用於每個變量。

+2

您不必在此處使用數組;你可以簡單地說'totalSUPPLY = sum(of supply :);'。 – Joe 2014-09-23 19:11:19

+1

感謝分享 - 我已經更新了我的答案。 – user667489 2014-09-24 21:18:01