我需要创建变量来标记患者接受治疗的年份。 我有一个看起来像这样的数据集(数据包括治疗时间,因此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函数开始,但是我不知道如何在开始和结束日期之间创建中间变量。 对于解决此问题的任何想法,我将不胜感激。
答案 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;