totalSUPPLY= sum(of supply1-supply485);
我已经从一个已经转置的表(因此是变量名)中进行了这个简单的计算(在SAS中)。我必须多次这样做,并且每次计算的供应变量数量都不相同。即在上面的例子中它是485,但我稍后在我的分析及其350中做到了。
我的问题:是否有办法通配'通配符'供应的数量'列。基本上,我想要这样的东西(但这不起作用):totalSUPPLY= sum(of supply1-supply%);
另外:如果有一个更简单的方法做同样的我打开(并且实际上更喜欢)那个。
谢谢大家!
答案 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;
当然,如果你声明一个数组,那么更容易做相关的事情,比如检查一起添加多少变量,或者循环遍历数组中的变量并依次对每个变量应用相同的逻辑。