SPSS按ID分组计算首次达标后测试均分及标记达标用户操作咨询
以下是SPSS环境下的完整实现步骤,所有语法可直接复制到语法窗口运行,字段名可根据你的实际数据集替换:
前置准备
首先确认你的数据集包含3个核心字段,且已提前筛选掉无任何≥40分记录的用户:
- 用户唯一标识字段:
ID - 测试序号字段:
test_no(取值1-10,对应10次测试的先后顺序) - 测试得分字段:
score(单次测试的得分数值)
首先执行排序,确保每个ID的测试记录按时间先后排列:
SORT CASES BY ID test_no. EXECUTE.
步骤1:标记达标用户(需求2实现)
- 生成单条测试记录是否达标标记
COMPUTE pass = (score >= 40). EXECUTE.
- 按ID聚合,一次性计算每个ID的达标总次数、首次达标的测试序号
AGGREGATE /OUTFILE=* MODE=ADDVARIABLES /BREAK=ID /pass_total = SUM(pass) /first_pass_test = MIN(IF(pass=1, test_no)).
- 生成最终达标用户标记
* 字段值1表示达标用户(至少2次≥40分),0表示非达标用户. COMPUTE 达标用户 = (pass_total >= 2). EXECUTE.
步骤2:计算首次达标后所有测试的均分(需求1实现)
- 标记当前测试记录是否属于首次达标后的统计范围
COMPUTE include_in_avg = (test_no >= first_pass_test). EXECUTE.
- 按ID聚合,计算符合条件的记录的得分均值
AGGREGATE /OUTFILE=* MODE=ADDVARIABLES /BREAK=ID /首次达标后均分 = MEAN(IF(include_in_avg=1, score)). EXECUTE.
可选操作:导出单用户维度的统计结果
如果需要输出每行对应一个ID的汇总表,可执行以下语法去重:
SORT CASES BY ID. MATCH FILES FILE=* /BY ID /FIRST=first_flag. SELECT IF first_flag=1. * 可根据需要删除test_no、score、pass等单测试维度的冗余字段. EXECUTE.
内容的提问来源于stack exchange,提问作者Scrub
相关产品推荐
相关产品推荐

