我有一个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
有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
首先,2011
或2012
不是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;