我如何循环通过SPSS中的变量?我想避免代码重复
-
04-10-2019 - |
题
是否有“本机” SPSS循环浏览一些可变名称的方法?我要做的就是列出变量(我定义的)列表,并为它们运行相同的过程:
伪代码 - 并不是一个很好的例子,但要说明...
for i in varlist['a','b','c']
do
FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end
我注意到人们似乎只使用R或Python SPSS插件来实现此基本数组功能,但是我不知道我可以在安装SPSS上配置这些插件(如果有的话)。
SPSS必须有一些本地方法才能做到这一点...对吗?
解决方案
有两种简单的解决方案,用于通过变量循环(与在SPSS中使用Python相比,更容易)。
1) DO REPEAT-END REPEAT
退缩是您可以使用 DO REPEAT-END REPEAT
主要仅用于数据转换 - 例如 COMPUTE
, RECODE
等等。不允许频率。例如:
DO REPEAT R=REGION1 TO REGION5.
COMPUTE R=0.
END REPEAT.
2) DEFINE-!ENDDEFINE
(宏设施)
您可以使用宏命令在变量循环中执行频率。例如:
DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.
macdef VAR1 VAR2 VAR3 /.
其他提示
如果我正确理解这个问题,则可能无需使用循环结构。具有变量子命令(例如频率)的SPSS命令允许您指定多个变量。
频率的基本语法是:
FREQUENCIES
VARIABLES= varlist [varlist...]
其中[varlist]是一个单个变量名称,多个空格限制的变量名称,一系列连续变量,其中指定了使用to关键字,关键字全部或以前选项的组合。
例如:
FREQUENCIES VARIABLES=VARA
FREQUENCIES VARIABLES=VARA VARB VARC
FREQUENCIES VARIABLES=VARA TO VARC
FREQ VAR=ALL
FREQ VAR=VARA TO VARC VARM VARX TO VARZ
看 SPSS统计17.0命令语法参考 可用 http://support.spss.com/productsext/spss/documentation/spssforwindows/index.htm
请注意,自从我实际使用SPSS以来已经有几年了。
在一个数据通行证上执行所有这些频率是更有效的,例如FREQUENCIES a to c.
但是Python让您进行循环和许多其他控制流窍门。
begin program.
import spss
for v in ['a','b','c']:
spss.Submit("FREQUENCIES " + v)
end program.
使用Python需要安装SPSS开发人员Central提供的(免费)Python插件, www.spss.com/devcentral.
当然,您可以将宏用于此类事情,但是一旦掌握了它,Python就会变得更加强大,更容易。
是的,SPSS可以做到这一点。听起来UCLA的家伙使用Python,因为他们知道如何在Python而不是在SPSS中做到这一点。 :)
让我们称您的变量vara,varb,varc。它们必须是数字的(因为您正在执行频率),并且必须在SPSS数据文件中连续。然后,您创建了一个矢量,说“这是我要循环的一系列变量”。
VECTOR VectorVar = VarA TO VarC.
LOOP #cnt = 1 to 3 by 1.
FREQUENCIES VARIABLES=VectorVar(#cnt) / ORDER=ANALYSIS
ENDLOOP.
EXECUTE.
(以上尚未测试。
这是UCLA的学术技术服务的页面,描述了变量列表的循环. 。引用,
“因为我们正在循环多个变量,所以我们需要使用Python。”
在我的经验中, UCLA ATS 可能是所有主要统计计算系统的最佳覆盖地点。如果他们说您需要Python ...您可能需要Python。
嗯...很抱歉成为那个家伙,但也许是时候切换到另一个统计系统了。
我没有太多使用SPSS宏,但是也许他们可以将您带到您需要的地方?查看此网站以获取一些示例:
http://spsstools.net/macros.htm
此外,SPSS数据管理书籍也可能会有所帮助。
最后,如果内存服务,我认为问题甚至可能是如何利用SPSS语法内部的Python的主要示例。我只使用了Python和SPSS几次,但是如果需要,可以访问该语言非常方便。
Hth
该如何为SPSS做这个stata sintxis。
foreach var of varlist pob_multi pob_multimod pob_multiex vul_car vul_ing nopob_nov espacio carencias carencias_3 ic_rezedu ic_asalud ic_ss ic_cv ic_sbv ic_ali pobex pob {
tabstat `var' [w=factor] if pob_multi!=., stats(mean) save
matrix define `var'_pp =(r(StatTotal))
matrix rownames `var'_pp = `var'_pp
}
matrix tabla1 = (pob_multi_pp \ pob_multimod_pp \ pob_multiex_pp \ vul_car_pp \ vul_ing_pp \ nopob_nov_pp \ espacio_pp \ carencias_pp \ carencias_3_pp \ espacio_pp \ ic_rezedu_pp\ ic_asalud_pp \ ic_ss_pp \ ic_cv_pp \ ic_sbv_pp\ ic_ali_pp \ espacio_pp \ pobex_pp \ pob_pp )
matrix list tabla1
谢谢。