将名称存储在其他列中的SAS Sum特定列

将名称存储在其他列中的SAS Sum特定列,sas,Sas,我有这样一个数据集: ID I201401 I201402 ... I201411 I201412 START END 1 1 0 1 1 I201402 I201410 2 0 0 0 1 I201401 I201408 3 1 1

我有这样一个数据集:

 ID    I201401    I201402    ... I201411    I201412    START     END
 1       1           0              1          1      I201402  I201410
 2       0           0              0          1      I201401  I201408
 3       1           1              0          0      I201408  I201412
为了简单地解释数据集,每个ID在I201401到I201412列中都有一个1或0,具体取决于某些因素。根据其他因素,我也确定了列的开始和结束。并非所有ID都具有相同的起始值和结束值

我要做的是创建另一列,它是从开始列到结束列中提到的列的总和。为了快速理解,以下是数据集应显示的内容:

 ID               SUM
 1  (SUM of I201402 Throught I201410)
 2  (SUM of I201401 Throught I201408)
 3  (SUM of I201408 Throught I201412)
问题是,我真的不知道如何指定sum函数来使用列START和END的值来执行is操作


谢谢大家!

我不知道如何在没有循环的情况下执行此操作,但是使用数组和
vname()
函数,您应该能够执行所需的操作:

data want (keep=id sum);
    set have;
    array var_array I201401--I201412;
    sum=0;
    do over var_array;
        if start le vname(var_array) le end then sum = sum + var_array;
    end;
run;

小心你的比较在数学上是有效的(在这种情况下,它们看起来是有效的),这是一个很好的解决方案。我在想一个更复杂的答案,但这个答案看起来是正确的。这个解决方案非常有效!我只是为if start le vname(var_数组)ge end-then-sum=sum+var_数组指定if语句;你确定吗?除非我真的误解了什么,否则结果总是sum=0。