Filter 在SPSS中隐藏没有数据的标签

Filter 在SPSS中隐藏没有数据的标签,filter,hide,spss,Filter,Hide,Spss,我刚开始使用SPSS,有一个选项,可以选择我在SPSS中尝试的案例,然后根据该过滤器查找频率。 例如: 假设Q1有12个部分,Q1_1 Q1_2 Q1_3 Q1_4 Q1_5 Q1_6 Q1_7 Q1_8 Q1_9 Q1_10 Q1_11 Q1_12 我希望根据我在某些情况下使用的条件查看这些变量中的数据。现在,当我试图根据滤波器查看这些变量的频率时,12个变量中只有4个有数据 现在我的问题是,我是否可以隐藏rest8,并在输出窗口中仅显示带有数据的4 您试图描述的内容并不完全清楚,但是在字里行

我刚开始使用SPSS,有一个选项,可以选择我在SPSS中尝试的案例,然后根据该过滤器查找频率。 例如: 假设Q1有12个部分,Q1_1 Q1_2 Q1_3 Q1_4 Q1_5 Q1_6 Q1_7 Q1_8 Q1_9 Q1_10 Q1_11 Q1_12 我希望根据我在某些情况下使用的条件查看这些变量中的数据。现在,当我试图根据滤波器查看这些变量的频率时,12个变量中只有4个有数据


现在我的问题是,我是否可以隐藏rest8,并在输出窗口中仅显示带有数据的4

您试图描述的内容并不完全清楚,但是在字里行间阅读,我猜您试图删除由频率生成的表格,这些频率可能碰巧是空的,可能是由于应用了过滤器,但也可能不一定是空的

您可以使用SPSS脚本实现这一点,但避免了这一点,您可能希望使用CTABLES进行探索,尽管CTABLES可能与频率表输出的格式不完全相同,但它仍将检索相同的信息

解决方案如下。假设Python与安装的SPSS SELECT变量集成,当然还有CTABLE附加模块

/****** Simulate example data ******/.
input program.
loop #j = 1 to 100.
    compute ID=#j.
    vector Q(12).
    loop #i = 1 to 12.
      do if #j<51 and #i<9.
        compute Q(#i) = $sysmis.
      else.
        compute Q(#i) = trunc(rv.uniform(1,5)).
      end if. 
    end loop.
    end case.
end loop.
end file.
end input program.
execute.
/************************************/.

/* frequencies without filtering applied */.
freq q1 to q12.

/* frequencies WITH filtering applied */.  
/* Empty table here shoult be removed */.  
temp.
select if (ID<51).
freq q1 to q12.

spssinc select variables macroname="!Qp" /properties pattern = "^Q\d+$"/options separator="+" order=file.
spssinc select variables macroname="!Qs" /properties pattern = "^Q\d+$"/options separator=" " order=file.

temp.
select if (ID<51).
ctables /table (!Qp)[c][count colpct]
  /categories variables=!Qs empty=exclude.

注意:如果您在总体级别上评估空变量,那么spssaux2 spssaux2.FindEmptyVars中有一个函数可以帮助您找到空变量,然后您可以构建语法来排除这些变量,从而只包含有效响应的变量,然后运行频率。但是我认为spssaux2.FindEmptyVars不会支持任何过滤。

感谢您为我的查询提供了解决方案,我们将尝试跟踪它并获得所需的输出。Jignesh提到的FindEmptyVars函数确实支持任何有效的过滤。我收回这一点:Jignesh是正确的。FindEmptyVars不支持筛选器。它的行为是故意保守的,以确保没有数据丢失。