【问题标题】:SPSS Syntax - Identify duplicate responses and systematically identify cases to keepSPSS Syntax - 识别重复响应并系统地识别要保留的案例
【发布时间】:2016-05-22 02:38:39
【问题描述】:

我在 SPSS 中有大量调查数据,其中大约 15% 的受访者多次回答了调查(这不是故意的)。我已经制定了一种系统的方法来确定要保留哪些案例,但不确定如何编写循环来执行此任务。

我拥有的变量是:

  • ID:每个人的唯一标识符(一些重复提交)
  • SurveyComplete:0/1(调查是否完成)
  • 重复:0/1(他们是否提交了多个调查)
  • PrimaryFirst:0/1(标识第一次提交)
  • MatchSequence:整数(调查提交编号的数字指标)
  • 日期:提交日期
  • keep: 0/1(尚未创建用于指示是否保留记录的指标)

我的数据如下所示:

ID  SurveyComplete  Duplicate  PrimaryFirst  MatchSequence    Date   keep
123       1             1            1             1        07162015  .
123       1             1            0             2        07182015  .
456       0             1            1             1        07152015  .
456       1             1            0             2        07192015  .
789       0             1            1             1        07112015  .
789       0             1            0             2        07182015  .
789       0             1            0             3        07212015  .
012       1             0            1             1        07122015  .

理论上,我想按以下顺序确定以下内容:

  1. IF Primary = 1 AND SurveyComplete = 1 THEN keep = 1。此 ID 的其他提交保持 = 0。
  2. ELSE IF Primary = 0 AND SurveyComplete = 1 THEN keep = 1。此 ID 的其他提交保持 = 0。
  3. ELSE(所有回复的 SurveyComplete = 0)保留最近提交的内容。

这是生成的保留列:

ID  SurveyComplete  Duplicate  PrimaryFirst  MatchSequence    Date   keep
123       1             1            1             1        07162015  1
123       1             1            0             2        07182015  0
456       0             1            1             1        07152015  0
456       1             1            0             2        07192015  1
789       0             1            1             1        07112015  0
789       0             1            0             2        07182015  0
789       0             1            0             3        07212015  1
012       1             0            1             1        07122015  1

理想情况下,我希望能够在没有插件的情况下以 SPSS 语法完成此操作,因为我的工作不喜欢软件附加组件。非常感谢您提供的任何帮助!

【问题讨论】:

    标签: spss data-management


    【解决方案1】:

    在每一步之后,AGGREGATE 函数都会为每个 ID 确定是否已经做出决定。已经有决定的 ID 将被淘汰出局,未决定的 ID 继续下一步:

    * creating fake data to play around with.
    * note I added an extra line for ID=456 to demonstrate choice between multiple non-primary lines.
    
    DATA LIST list (", ") / ID SurveyComplete Duplicate PrimaryFirst MatchSequence Date.
            begin data
            123, 1, 1, 1, 1, 7162015
            123, 1, 1, 0, 2, 7182015
            456, 0, 1, 1, 1, 7152015
            456, 1, 1, 0, 2, 7192015
            456, 1, 1, 0, 3, 7192015
            789, 0, 1, 1, 1, 7112015
            789, 0, 1, 0, 2, 7182015
            789, 0, 1, 0, 3, 7212015
            12, 1, 0, 1, 1, 7122015
            end data.
            execute.
    
    * now starting work on defining the KEEP variable.
    
            if (PrimaryFirst = 1 AND SurveyComplete = 1) keep=1.
            if (PrimaryFirst = 0 AND SurveyComplete = 1) NotPrimarySeq=MatchSequence.
            aggregate /outfile=* mode=addvariables /break=ID /decided=max(keep)/NotPrimarySeq_min=min(NotPrimarySeq).
    
            if missing(decided) and (PrimaryFirst = 0 AND SurveyComplete = 1) keep=(NotPrimarySeq=NotPrimarySeq_min).
            aggregate/outfile=* mode=addvariables overwritevars=yes /break=ID/decided=max(keep)/Date_max=MAX(Date).
    
            if missing(decided) keep=(date=date_max).
            recode keep (miss=0).
            execute.
    

    【讨论】:

    • 感谢您的帮助!你能为我澄清一件事吗? /decided 命令似乎不是聚合命令的一部分。这是我需要在聚合命令之外计算的单独行吗?
    • 还有一个问题。在我决定保留下一个完整调查的第二组语法中,最终发生的是它将保留所有完整调查(即,如果调查 1 不完整,但 2 和 3 是,它将标记 2和 3 当我只想保留 2) 时都保留。提前谢谢!
    • 我为该问题添加了修复程序 - 请考虑更新您的问题以包含此附加详细信息。
    猜你喜欢
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多