变量列表中的通配符

时间:2014-09-23 17:27:53

标签: sas

totalSUPPLY= sum(of supply1-supply485);

我已经从一个已经转置的表(因此是变量名)中进行了这个简单的计算(在SAS中)。我必须多次这样做,并且每次计算的供应变量数量都不相同。即在上面的例子中它是485,但我稍后在我的分析及其350中做到了。

我的问题:是否有办法通配'通配符'供应的数量'列。基本上,我想要这样的东西(但这不起作用):totalSUPPLY= sum(of supply1-supply%);

另外:如果有一个更简单的方法做同样的我打开(并且实际上更喜欢)那个。

谢谢大家!

1 个答案:

答案 0 :(得分:2)

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

N.B。使用这样的:通配符只会获取创建数组时PDV中存在的匹配变量,因此数组定义必须在set语句之后。此外,它仅适用于具有公共前缀的变量,而不适用于具有公共后缀的变量。

正如Joe指出的那样,以下更简洁的代码也可以使用:

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

当然,如果你声明一个数组,那么更容易做相关的事情,比如检查一起添加多少变量,或者循环遍历数组中的变量并依次对每个变量应用相同的逻辑。