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

时间:2018-08-31 15:56:13

标签: sas do-loops

我正在使用的保险范围数据集包含第1天到第365天的覆盖状态1(是)或0(否)。我需要创建一个变量,该变量的总和为1,但仅在特定的一天之前。再次由另一个变量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        ?

1 个答案:

答案 0 :(得分:2)

这很简单。创建所有日期的数组,然后循环遍历它们的前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;

正如@Reeza在评论中所说,请展示您的尝试。 SO不是代码编写服务。请先尝试一下,然后询问是否卡住。我给你这个。 ;-)