SAS:对从 1 到列指定的值的行进行循环求和



我正在使用一个保险范围数据集,其中包含第 1 天到 365 天的覆盖范围状态 1(是(或 0(否(。我需要创建一个变量是 1s 的总和,但只到某一天,这又由另一个变量 num days 指定。在下面的数据集中,我想创建直到"NumDays"指定的位置之前的天数总和。因此,A 的总和值为 4、B - 2、C - 2、D-4 和 E-1。有什么想法吗?谢谢!

ID  Day2    Day3    Day4    Day5    Day6    NumDays Sum
A   1       1       1       0        1      5        ?
B   1       0       1       1        1      3        ?
C   1       1       1       1        1      2        ?
D   1       1       1       1        1      4        ?
E   1       1       1       1        1      1        ?

这很简单。 创建一个包含所有天数的数组,然后循环遍历它们的第一个 NumDays,将它们相加。

data want;
set have;
array d[*] day:;
do i=1 to NumDays;
if i <= dim(d) then
sum = sum(sum,d[i]);
end;
drop i;
run;

最新更新