首页 > 解决方案 > 每行中的多重比较

问题描述

在 SPSS 上,我有一个包含 6000 多人的电子表格。每个人至少参加过两次测试,并且同一测试至少有两个结果。有些人参加了两次以上的测试。SPSS 是否可以查看这两项测试是否在 6 个月内,以及它们是否包括该人旁边的这些测试的结果并删除所有其他结果?

数据结构

PersonNo  Test Date  Test Result  Test Date 2  Test result 2, Test Date 3, Test result 3
PersonNo 512, 23-Aug-18, 65, 22-May-18, 72

问题

PersonNo 98432, 09-Feb-18, 74, 06-Nov-18, 76, 10-Aug-18, 67
PersonNo 91203, 10-Dec-18, 75, 10-Sep-18, 65
PersonNo 75432, 01-Jan-18, 65, 01-Dec-18, 65

我多么想要

PersonNo 98432, 09-Feb-18, 74, 10-Aug-18, 67
PersonNo 91203, 10-Dec-18, 75, 10-Sep-18, 65

75432 号人员因在 6 个月内没有两次检测结果而被移除

标签: spss

解决方案


要查看在TestDate变量的 6 个月内进行了哪些测试,您可以使用DATEDIFF(date1, date2, units). 由于不清楚您有多少 TestDate 字段,您可能需要重新排序变量以使用 VECTOR 命令循环它们。

* assumes there are up to 11 tests each respondent may have taken.
VECTOR nextTestDate = TestDate2 TO TestDate 11 .
VECTOR nextTestResult = TestResult2 TO TestResult11 .
LOOP #i = 1 TO 10 .
* if not within 6 months then set date & result to sysmis .
DO IF (DATEDIFF(TestDate, nextTestDate(#i), 'days') > 182) .
  RECODE nextTestDate(#i) nextTestResult(#i) (ELSE = SYSMIS) .
END IF .
END LOOP .
EXE .

VECTOR如果您只有几个 TestDate 字段要检查,则不需要在其中执行此操作。从这里您可以删除其中不再包含任何数据的任何变量(使用 DESC TestResult2 TO TestResult11 轻松检查)。


推荐阅读