我怀疑这将需要使用AGGREGATE
为所有家庭成员分配所需的特征,然后使用 if 语句来制作家庭类型。因此,让我们从一些类似于您的示例数据开始。这会生成一组长格式的族。
data list free / house relation.
begin data
1 1
1 2
1 3
2 1
3 1
3 2
4 1
4 3
5 1
5 2
5 3
5 3
5 3
end data.
VALUE LABELS relation
1 'Head'
2 'Spouse'
3 'Child'.
从这里我将推荐四种类型的家庭;Single-No Children
, Couple-No Children
,Single-With Children
和Couple-With Children
. 为了得到这些,我制作了一个虚拟变量来指示一个案例是孩子还是配偶,然后汇总家庭内的最小值,以提供家庭是否有配偶或任何孩子的标志。
*Make flag for if have a spouse and if have a child.
COMPUTE child = (relation EQ 3).
COMPUTE spouse = (relation EQ 2).
*Aggregate to get a flag for child or spouse.
AGGREGATE
/OUTFILE=* MODE=ADDVARIABLES
/BREAK=house
/AnyChild = MAX(child)
/AnySpouse = MAX(spouse)
/NumChild=SUM(child)
/TotalFamSize=N.
我还展示了如何在聚合命令中获取使用的儿童SUM
总数和使用的家庭总人数。N
从这里您可以使用一系列 if 语句来对不同类型的族进行分类。
*From here can make several fam categories using DO IF.
DO IF TotalFamSize = 1.
COMPUTE FamType = 1.
ELSE IF AnySpouse = 1 AND AnyChild = 0.
COMPUTE FamType = 2.
ELSE IF AnySpouse = 0 and AnyChild = 1.
COMPUTE FamType = 3.
ELSE IF AnySpouse = 1 and AnyChild = 1.
COMPUTE FamType = 4.
END IF.
VALUE LABELS FamType
1 'Single - No Children'
2 'Couple - No Children'
3 'Single - Children'
4 'Couple - Children'.
EXECUTE.
这种使用聚合来获取整个家庭统计数据的逻辑应该适用于您想要生成的任何类型的统计数据。