2014-09-23 93 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