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

标签 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              0          0      I201408  I201412

为了简单地解释数据集,每个 ID 在 I201401 到 I201412 列中都有 1 或 0,具体取决于特定因素。根据其他因素,我也建立了“开始”和“结束”列。并非所有 ID 都具有相同的 START 和 END 值。

我想要做的是创建另一个列,它是 START 列到 END 列中提到的列的总和。为了快速理解,这里应该显示数据集:

 ID               SUM
 1  (SUM of I201402 Throught I201410)
 2  (SUM of I201401 Throught I201408)
 3  (SUM of I201408 Throught I201412)

问题是我真的不知道如何指定 sum 函数来使用 START 和 END 列的值来执行操作。

谢谢!

最佳答案

我不知道如何在不循环的情况下执行此操作,但是使用数组和 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;

关于SAS Sum 特定列的名称存储在其他列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27972632/

相关文章:

sql - 在以表别名为前缀的字段上使用 'Calculated' 函数 - SAS SQL

variables - SAS中如何随机选择变量?

sas - 使用SAS计算缺失值的平均值

sas - 使用 symget 与使用 & 取消引用

sql - 在 SAS 中根据基线创建计数

sas - SAS中如何根据条件进行计数

sas - 不等于运算符在 SAS proc sql 中未按预期工作

macros - 在 Proc SQL 中创建宏变量时宏变量生成空格

windows - 在新窗口中打开 SAS 程序

sql - 如何在Hadoop中使用sql将所有联合与多个表一起使用?