【问题标题】:Delete variables based on the number of observations根据观察次数删除变量
【发布时间】:2016-02-11 19:49:37
【问题描述】:

我有一个包含大约 1000 个变量的 SPSS 文件,我必须删除具有 0 个有效值的变量。我可以想到一个带有 if 语句的循环,但我找不到如何编写它。

【问题讨论】:

    标签: spss


    【解决方案1】:

    最简单的方法是像这样使用spssaux2.FindEmptyVars Python 函数:

    begin program.  
    import spssaux2  
    
    spssaux2.FindEmptyVars(delete=True)  
    end program.
    

    如果您尚未安装 spssaux2 模块,则需要从 SPSS 社区网站或 IBM Predictive Analytics 站点获取它,并将其保存在您的 Statistics 安装下的 python\lib\site-packages 目录中。

    否则,VALIDATEDATA 命令(如果有)会将违反此类规则的变量识别为缺失值的最大百分比,但您必须将该输出转换为 DELETE VARIABLES 命令。您还可以使用 DESCRIPTIVES 来查找缺失值为零的变量,然后选择 N=0 的变量。

    【讨论】:

      【解决方案2】:

      如果您从未在 SPSS 中使用过 python,这里有一种方法可以在没有它的情况下完成工作(不那么优雅,但应该可以完成工作):

      这将计算每个变量中的有效案例,并仅选择有效案例为 0 的那些。然后,您将手动将这些变量的名称复制到将删除它们的语法命令中。

      DATASET NAME Orig.
      DATASET DECLARE VARLIST.
      AGGREGATE /OUTFILE='VARLIST'/BREAK=
      /**list_all_the_variable_names_here = NU(*FirstVarName to *LastVarName).
      DATASET ACTIVATE VARLIST.
      VARSTOCASES /MAKE NumValid FROM *FirstVarName to *LastVarName/INDEX=VarName(NumValid).
      SELECT IF NumValid=0.
      EXECUTE.
      

      在此处暂停以复制列表中剩余的名称并完成语法,然后继续:

      DATASET ACTIVATE Orig.
      DELETE VARIABLES *paste_here_all_the_remaining_variable_names_from_varlist .
      

      注意事项: * 我把星星放在你必须用你的变量名替换我的文本的地方。 ** 如果变量被整齐地命名为 Q1、Q2、Q3 .... Q1000,您可以使用“FirstVarName to LastVarName”形式(Q1 到 Q1000)而不是列出所有变量名称。

      顺便说一句,当然可以完全自动执行此操作而无需手动复制这些名称(仅使用语法,不使用 Python),但增加的复杂性不值得为一次性使用而烦恼...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-27
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-17
        • 1970-01-01
        相关资源
        最近更新 更多