在SAS中跟踪ID

时间:2017-09-25 08:48:35

标签: sas

我有一个SAS问题。我有一个包含ID和年份的数据集。我想创建虚拟变量" 2011"和" 2012"如果ID在给定年份中有观察值,那么该值应为1,否则为0。例如。 ID 2应该具有2011 = 1和2012 = 0,因为ID仅具有2011年的观察值。

ID   Year   2011   2012
1    2011     1      1 
1    2012     1      1
2    2011     1      0
3    2012     0      1

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

首先,20112012不是SAS变量的有效名称。 SAS变量必须以字母或下划线开头(例如_2011)。

如果你真的需要,你可以通过设置系统选项validvarname=any并围绕你的“无效”来解决这个限制。带有单引号的变量名称并附加n

这可以做你想要的:

data have;
infile datalines;
input ID year;
datalines;
1 2011
1 2012
2 2011
3 2012
;
run;

options validvarname=ANY;
proc sql;
create table want as
select ID
      ,year
      ,exists(select * from have b where year=2011 and a.id=b.id) as '2011'n
      ,exists(select * from have b where year=2012 and a.id=b.id) as '2012'n
from have a
;
quit;