Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Statistics 如何在SPSS中循环变量?我想避免代码重复_Statistics_Loops_Spss - Fatal编程技术网

Statistics 如何在SPSS中循环变量?我想避免代码重复

Statistics 如何在SPSS中循环变量?我想避免代码重复,statistics,loops,spss,Statistics,Loops,Spss,是否有一种“本机”SPSS方法可以循环使用一些变量名?我所要做的就是获取一个变量列表(我定义的),并为它们运行相同的过程: 伪代码-这不是一个很好的例子,但它能让人明白 for i in varlist['a','b','c'] do FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS. end 我注意到人们似乎只是使用R或pythonsps插件来实现这个基本的数组功能,但我不知道我要多久才能在安装SPSS时配置这些插件(如果有的话) SPS

是否有一种“本机”SPSS方法可以循环使用一些变量名?我所要做的就是获取一个变量列表(我定义的),并为它们运行相同的过程:

伪代码-这不是一个很好的例子,但它能让人明白

for i in varlist['a','b','c']
do
  FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end
我注意到人们似乎只是使用R或pythonsps插件来实现这个基本的数组功能,但我不知道我要多久才能在安装SPSS时配置这些插件(如果有的话)

SPSS必须有一些本地的方法来实现这一点……对吗?

。引述

“因为我们正在通过更多的 不止一个变量,我们需要使用 蟒蛇。”

根据我的经验,它可能是覆盖所有主要统计计算系统的最佳站点。如果他们说你需要Python。。。您可能需要Python


呃。。。很抱歉成为那个家伙,但也许是时候换一个不同的统计系统了。

我没有太多使用SPSS宏,但也许它们可以帮你找到你需要的地方?查看此网站以了解一些示例:

此外,SPSS数据管理手册也可能有所帮助

最后,如果内存可用,我认为问题甚至可能是如何在SPSS语法中利用Python的主要示例。我只使用过Python和SPSS几次,但如果需要的话,可以方便地访问该语言


HTH

在一次数据传递中执行所有这些频率更有效,例如。,
频率a到c.
但是Python允许您执行循环和许多其他控制流技巧

begin program.
import spss
for v in ['a','b','c']:
  spss.Submit("FREQUENCIES " + v)
end program.
使用Python需要安装SPSS Developer Central提供的(免费)Python插件


当然,您可以使用宏来完成这类工作,但一旦掌握了窍门,Python将更加强大和简单。

是的,SPSS可以做到这一点。听起来像是加州大学洛杉矶分校的人在使用python,因为他们知道如何用python而不是SPSS来做这件事

让我们把变量称为VARA,VARB,VARC。它们必须是数字(因为您正在进行频率计算),并且在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.
DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.

macdef VAR1 VAR2 VAR3  /.
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
2)
DEFINE-!ENDDEFINE
(宏设备)

您可以使用宏命令在变量循环中执行频率。例如:

DO REPEAT R=REGION1 TO REGION5.
COMPUTE R=0.
END REPEAT.
DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.

macdef VAR1 VAR2 VAR3  /.
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命令允许您指定多个变量

频率的基本语法为:

FREQUENCIES
    VARIABLES= varlist [varlist...] 
其中,[varlist]是单个变量名、多个空格分隔的变量名、使用TO关键字指定的一系列连续变量、关键字ALL或前面选项的组合

例如:

DO REPEAT R=REGION1 TO REGION5.
COMPUTE R=0.
END REPEAT.
DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.

macdef VAR1 VAR2 VAR3  /.
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 Statistics 17.0命令语法参考,网址为


请注意,我已经多年没有真正使用SPSS了。

如何为SPSS实现这一点

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

谢谢。

我也有SAS,但SPSS似乎更适合我所做的点击统计。谢谢你的建议:)也许我会找出这个任务的SAS代码…这肯定不起作用-不仅仅是因为缺少一个周期
循环
重复
仅影响转换命令,它们对输出命令没有影响,例如
频率