SAS:对从 1 到列指定的值的行进行循环求和
SAS: Do loop summing rows from 1 to value specified by a column
我正在处理一个保险覆盖数据集,其中包含第 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 ?
这很简单。创建一个包含所有日期的数组,然后循环遍历第一个 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 不是代码编写服务。先试一试,然后问你是否卡住了。我给你这个。 ;-)
我正在处理一个保险覆盖数据集,其中包含第 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 ?
这很简单。创建一个包含所有日期的数组,然后循环遍历第一个 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 不是代码编写服务。先试一试,然后问你是否卡住了。我给你这个。 ;-)