如何在SPSS中使用3个变量实现循环,计算逮捕前累计收入CASH2
SPSS实现按个体累计逮捕前收入的操作方案
首先确保数据集已经按两个字段升序排序:ID(个体编码)、月度顺序字段(默认该字段名为MONTH,保证同一个ID下的记录按时间从早到晚排列)。
方法1:调用SPSS自带函数实现(运行更稳定,无需手动写循环)
- 第一步:按个体分组计算累计收入
SORT CASES BY ID MONTH. CREATE CASH_TOTAL = CSUM(CASH) BY ID.
上述代码中CSUM函数会按ID分组计算CASH字段的累计和,结果存入临时变量CASH_TOTAL。
- 第二步:按逮捕月份条件生成最终变量
CASH2
DO IF $CASENUM EQ 1 OR ID NE LAG(ID). - COMPUTE FLAG = 0. END IF. DO IF MONTH LE A1. - COMPUTE CASH2 = CASH_TOTAL. ELSE. - COMPUTE CASH2 = $SYSMIS. END IF. EXECUTE.
方法2:显式循环实现(符合自定义循环的需求)
如果你需要手动写循环实现逻辑,可以使用以下语法:
SORT CASES BY ID MONTH. COMPUTE CASH2 = $SYSMIS. COMPUTE TEMP_SUM = 0. * 处理同一个ID的非首条记录. LOOP IF $CASENUM NE 1 AND ID EQ LAG(ID). - DO IF MONTH LE A1. - COMPUTE TEMP_SUM = TEMP_SUM + CASH. - COMPUTE CASH2 = TEMP_SUM. - ELSE. - COMPUTE CASH2 = $SYSMIS. - END IF. END LOOP. * 处理每个ID的第一条记录. DO IF $CASENUM EQ 1 OR ID NE LAG(ID). - COMPUTE TEMP_SUM = CASH. - DO IF MONTH LE A1. - COMPUTE CASH2 = TEMP_SUM. - ELSE. - COMPUTE CASH2 = $SYSMIS. - END IF. END IF. EXECUTE. * 删除临时计算变量. DELETE VARIABLES TEMP_SUM.
注意:运行前请确认你的月度字段
MONTH的取值逻辑和A1完全对齐,比如A1=5对应同一个ID下MONTH=5的记录,避免累计范围出错。
内容的提问来源于stack exchange,提问作者meligigi
相关产品推荐
相关产品推荐

