根据开始和结束日期创建带有年份的变量

时间:2018-08-28 15:26:33

标签: sas

我需要创建变量来标记患者接受治疗的年份。 我有一个看起来像这样的数据集(数据包括治疗时间,因此1位患者可以有多行不同的治疗方法):

ID / atc_label /日期/结束日期

1 / VitD / 2005年10月31日/ 2005年1月24日

1 /类固醇/ 2008年10月31日/ 2015年1月24日

2 /类固醇/ 2005年10月15日/ 2010年12月21日

3 /系统/ 2007年10月15日/ 2017年12月21日

...

我需要创建直到2005年的变量2005、2006、2007、2008、2009 ..直到2018。如果在今年使用了这种治疗方法,该变量将具有正确的atc_label值。

我确实从Year函数开始,但是我不知道如何在开始和结束日期之间创建中间变量。 对于解决此问题的任何想法,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用数组,并以年份为索引。

...
</body>
<script>
    $(function () {initPage();});
</script>
</html>

答案 1 :(得分:0)

花了我一段时间才弄清楚如何使代码正常工作。

这是我所需要的解决方案:

data want;
set have;

*calculate start and end years based on dates;
year_start =year(stdt);
year_end = year(enddt);

run;


data want;
set have;

*declare array variables to hold flags;
array flags(2010:2018)$ flag2010-flag2018;

*set to missing to avoid carry over from previous line;
call missing(of flags(*));

*loop and set years to 1 between year start and end;
 do year = year_start to year_end by 1;
 flags(year) = atc_label;
end;

run;