SPSS LAG功能

时间:2017-07-31 22:02:09

标签: spss

我有一个像这样的SPSS数据集,我想确定后续日期是否为"重复"给定ID的上一个日期:

ID   CorrDate    

39   07/24/2017  
39   07/25/2017  
39   07/27/2017  
39   07/27/2017  
91   03/01/2017  
99   07/04/2017  
999  02/22/2017  
999  02/22/2017  
999  02/22/2017  
999  02/22/2017        

我在SPSS中尝试了以下LAG功能:

SORT CASES BY ID(A) CorrDate(A).

IF (ID=LAG(ID) AND CorrDate ne LAG(CorrDate)) Duplicate = 0. 
EXECUTE.

IF (ID=LAG(ID) AND CorrDate eq LAG(CorrDate)) Duplicate = 1. 
EXECUTE.

然而,这似乎没有产生准确的结果,所以我尝试了以下命令,看看我是否能确定问题的根源:

COMPUTE PreviousID=LAG(ID).
COMPUTE PreviousDate=LAG(CorrDate).
EXECUTE.

IF (ID=PreviousID) AND (CorrDate~=PreviousDate) Duplicate = 0. 
EXECUTE.

IF (ID=PreviousID) AND (CorrDate=PreviousDate) Duplicate = 1. 
EXECUTE.

两者都产生了以下输出,似乎无法正确识别ID#39和999的重复项:

ID  PreviousID   CorrDate    PreviousDate  Duplicate

39  39           07/24/2017  07/23/2017    0
39  39           07/25/2017  07/24/2017    0
39  39           07/27/2017  07/25/2017    0
39  39           07/27/2017  07/27/2017    0
91  39           03/01/2017  07/27/2017    .
99  91           07/04/2017  03/01/2017    .
999 99           02/22/2017  07/04/2017    .
999 999          02/22/2017  02/22/2017    0
999 999          02/22/2017  02/22/2017    0
999 999          02/22/2017  02/22/2017    1

我排序不正确吗?或者我是否需要指定另一个延迟选项?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

找到重复项的方法都很好并且应该可行,但这里有两种更有效的方法:

aggregate out=* mode=add /break=ID CorrDate/occurrences=n.

这将创建一个新变量,其中包含IDCorrDate的每个组合在数据中出现的次数。

如果您想要更多选项(例如自动选择其中一个重复项),请使用菜单数据>识别重复案例,选择您需要的选项。

重新审视似乎不起作用的案件: 如果SPSS说这两个日期不相等,他们就不...... 就像@horace_vr所说,日期也可能包含时间。您可以通过更改日期格式以包含时间,或者只是将类型更改为数字,在数据中轻松查看,然后差异将可见。