例如,如果我有个人记录的集合,组织成家庭,并且我想分配给有女儿的父母和女儿= 1的父母,并且对有个女儿的个人分配coreidentwithson = 1儿子我该怎么做?
如果给出家庭数量和关系的变量,我将如何编码 coresidentwithdaughter 和 coresidentwithson 以获得以下结果
示例数据:
家庭 703 703 703 703 703 703 性 1 2 2 2 1 1 年龄 43 41 17 16 13 12 关系头配偶儿童孩子孩子 coreidentwithdaughter 1 1 0 0 0 0 coresidentwithson 1 1 0 0 0 0
家庭 704 704 704 性 2 2 1 年龄 29 20 2 关系头姐妹 coreidentwithdaughter 0 0 0 coresidentwithson 1 0 0
答案 0 :(得分:0)
基于'child'
是被视为儿子或女儿的唯一关系的假设,并且'head'
和'spouse'
是唯一允许成为父母的值(不确定你是什么)意图与'姐妹')。以下将使用PROC SQL
完成工作。
proc sql;
select t.*,
case when t.relation in ('head','spouse') and x.son then 1 else 0 end as coresidentwithson,
case when t.relation in ('head','spouse') and x.daughter then 1 else 0 end as coresidentwithdaughter
table t
inner join
(
select
household,
sum(case when sex=1 then 1 else 0 end) as son
sum(case when sex=2 then 1 else 0 end) as daughter
from table
where relation = 'child'
group by 1
) x
on t.household=x.household;
quit;
这是自联接的示例,在执行引用回同一组的查询时需要该自联接。使用data-step
也可以做到这一点,但我没有这个解决方案。