计算每组内的一系列值
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)
。
我有一个数据集,其中每个 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)
。