2015-06-16 244 views
0

我使用SPSS宏为不同选区创建了许多报告。其中一组只需要女性受访者提供的数据,但其余的则希望数据中的男性和女性受访者。是否可以在SPSS中创建条件过滤器,以便我可以对所有报告使用相同的循环,还是必须为该组仅创建一个单独的语法来仅需要女性?SPSS中的条件过滤

编辑:我的代码的简化版本是这样的:

DEFINE !ess1 (inum=!charend ('/') 
/iname=!charend ('/') 
/iname2=!charend ('/') 
/g1=!charend ('/') 
/g2=!charend ('/') 
/g3=!charend ('/') 
/g4=!charend ('/')). 

RECODE INST 
    (!inum=1) 
    (!g1 = 2) 
    (!g2= 3)  
    (!g3=4) 
    (!g4=5) 
    into cgroup. 
MISSING VALUES cgroup(-9). 
variable labels cgroup 'Comparison Group'. 
value labels cgroup 1 !iname2 2 'Thing1' 3 'Thing2' 4 'Thing3' 5 'Thing4'. 
EXECUTE. 

USE ALL. 
VARIABLE LEVEL ALL (NOMINAL). 

CTABLES 
    /VLABELS VARIABLES=satisf cgroup DISPLAY=DEFAULT 
    /TABLE cgroup [ROWPCT.COUNT PCT40.1] BY satisf 
    /SLABELS VISIBLE=NO 
    /CATEGORIES VARIABLES=satisf cgroup ORDER=A KEY=VALUE EMPTY=INCLUDE TOTAL=YES LABEL="Overall" POSITION=AFTER 
    MISSING=EXCLUDE 
    /TITLES 
    TITLE= 'Overall, how satisfied have you been with this example syntax?'. 

DELETE VARIABLES cgroup. 

OUTPUT EXPORT 
    /CONTENTS EXPORT=VISIBLE LAYERS=PRINTSETTING MODELVIEWS=PRINTSETTING 
    /PDF DOCUMENTFILE=!Quote(!Concat('filepath',!iname,'.pdf')) 
    EMBEDBOOKMARKS=YES EMBEDFONTS=YES. 

OUTPUT SAVE 
OUTFILE=!Quote(!Concat('filepath',!iname,'.spv')) 

OUTPUT CLOSE *. 
OUTPUT NEW. 

!ENDDEFINE. 

!ess1 inum=1/iname=Name1/ iname2='Name1'/g1= 2,3,4,5,6,7,8,9,10,11,12,13 /g2= 21,22,23,24,25,26,27,29/g3=31,32,33,34,35,36,37,38/g4=41,42,43,44,45/. 
!ess1 inum=2 /iname=Name2 /iname2='Name2'/g1= 1,3,4,5,6,7,8,9,10,11,12,13 /g2= 21,22,23,24,25,26,27,29/g3=31,32,33,34,35,36,37,38/g4=41,42,43,44,45/. 
!ess1 inum=3 /iname=Name3 /iname2='Name3'/g1= 1,2,4,5,6,7,8,9,10,11,12,13 /g2= 21,22,23,24,25,26,27,29/g3=31,32,33,34,35,36,37,38/g4=41,42,43,44,45/. 
+0

答案可能是肯定的,但这取决于迄今为止所做的工作。请发布您的宏代码(循环)。 – mirirai

+0

感谢您回应我的两个问题mirirai!我的循环长度超过1000行,所以在上面的编辑中,我除掉了一个示例表格......让我知道是否有更多信息需要输入! – lbug

回答

1

看看您如何设置此工作流程,您可以暂时将INST变量设置为SYSMIS,用于您要排除男性的特定机构(?)。

所以下面添加到您的代码是这样的:

/* Untested */. 
TEMP. 
DO IF ANY(INST, !g1). 
    RECODE INST (ELSE=SYSMIS). 
END IF. 
CTABLES ... 

随着INST变量现在设置为SYSMISCTABLES应在默认情况下数据的任何表格显示排除这些情况。

0

您将需要一个参数添加到宏是否要过滤掉的男性,然后,有条件的话虽是(IF! !femalesonly eq“yes”),生成适当的计算和过滤语法(然后在最后关闭它)。

+0

感谢您回答JKP。你能给我一个这样的例子吗?我仍然是在SPSS中使用宏的新手。 – lbug