计算每组内的一系列值

Counting a range of values within each group

我有一个数据集,其中每个 observation/row 都是属于某个家庭的人。

有一个变量"Family_ID",同一家庭的每个成员都有相同的编号。

此外,还有一个变量"Age",根据这个我必须创建一个新变量,它为每个家庭计算 0-13 岁的成员人数,并将这个数字分配给每个家庭成员家庭。我手动创建了变量 "Number0_13" 来让您了解我正在尝试做的事情。

我该怎么做?

在此先感谢您的帮助

Family_ID Age Number0_13
1         40    2
1         38    2
1         5     2
1         10    2
2         43    1
2         39    1
2         12    1
3         25    1  
3         24    1  
3         1     1  

您可以使用 AGGREGATE 函数来做到这一点。您通过设置 /BREAK 指定要分组的变量,然后使用 Aggregate Functions 创建聚合变量。

在这种情况下,CIN() 计算 Age 在 0 到 13(含)之间的案例数(对于每个 Family_ID)。

AGGREGATE
 /OUTFILE=* MODE=ADDVARIABLES
 /BREAK=Family_ID
 /Number0_13=CIN(Age, 0, 13) .

请注意,在这种情况下我们也可以使用 CLT(Age, 14)