SPSS LAG Function

  • 本文关键字:Function LAG SPSS 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

我的排序不正确吗?还是我需要指定另一个滞后选项?感谢您的任何帮助!

查找重复项的两种方法都很好,应该有效,但这里有两种更有效的方法:

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

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

如果您需要更多选项(例如,自动选择一个重复项进行保留(,请使用">数据">"识别重复案例"菜单,选择所需的选项。

对于似乎不起作用的情况: 如果SPSS说这两个日期不相等,它们不是...... 就像@horace_vr说的那样,日期可能也包含时间。您可以通过更改日期格式以包含时间或仅将类型更改为数字来轻松看到数据中的差异,然后差异将可见。

最新更新