是否有一种“原生”SPSS方式来循环访问某些变量名称?我想要做的就是获取一个变量列表(我定义)并为它们运行相同的过程:
伪代码 - 这不是一个很好的例子,但是能够明白......
for i in varlist['a','b','c']
do
FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end
我注意到人们似乎只是使用R或Python SPSS插件来实现这个基本的数组功能,但我不知道我能在多长时间内完成安装SPSS的配置(如果有的话)。
SPSS必须有一些原生方式才能做到这一点......对吗?
答案 0 :(得分:6)
循环变量有两种简单的解决方案(与在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 /.
答案 1 :(得分:5)
如果我正确理解了这个问题,可能就没有必要使用循环结构。带有VARIABLES子命令的SPSS命令(如FREQUENCIES)允许您指定多个变量。
FREQUENCIES的基本语法是:
FREQUENCIES
VARIABLES= varlist [varlist...]
其中[varlist]是单个变量名称,多个以空格分隔的变量名称,使用TO关键字指定的一系列连续变量,关键字ALL或先前选项的组合。
例如:
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
请参阅http://support.spss.com/ProductsExt/SPSS/Documentation/SPSSforWindows/index.htm
上提供的 SPSS Statistics 17.0命令语法参考请注意,自从我实际使用SPSS以来已经有好几年了。
答案 2 :(得分:1)
在一次数据传递中执行所有这些频率更有效,例如,
FREQUENCIES a to c.
但Python允许你做循环和许多其他控制流程技巧。
begin program.
import spss
for v in ['a','b','c']:
spss.Submit("FREQUENCIES " + v)
end program.
使用Python需要安装SPSS Developer Central提供的(免费)Python插件www.spss.com/devcentral。
当然,你可以使用宏来做这类事情,但是一旦你掌握了它,Python就会变得更加强大和容易。
答案 3 :(得分:1)
是的,SPSS可以做到这一点。听起来像加州大学洛杉矶分校的人使用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.
(上面的内容尚未经过测试。可能会错过一段时间,等等。)
答案 4 :(得分:0)
“因为我们正在循环更多 比一个变量,我们需要使用 的Python“。
根据我的经验,UCLA ATS可能是所有主要统计计算系统覆盖率最高的网站。如果他们说你需要Python ......你可能需要Python。
呃...对不起那个人,但也许是时候切换到不同的统计系统了。
答案 5 :(得分:0)
我没有非常使用SPSS宏,但也许他们可以帮到你需要的地方?查看此站点以获取一些示例:
http://spsstools.net/Macros.htm
此外,SPSS数据管理书籍也可能有所帮助。
最后,如果内存服务,我认为问题甚至可能是如何在SPSS语法中利用Python的主要示例。我只使用过Python和SPSS几次,但如果需要,可以使用这种语言非常方便。
HTH
答案 6 :(得分:-2)
如何为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
感谢。