5

是否有一种“本机” SPSS 方法来遍历一些变量名?我要做的就是获取一个变量列表(我定义的)并为它们运行相同的过程:

伪代码- 不是一个很好的例子,但可以理解......

for i in varlist['a','b','c']
do
  FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end

我注意到人们似乎只是使用 R 或 Python SPSS 插件来实现这个基本的数组功能,但我不知道在安装 SPSS 时多久可以配置这些插件(如果有的话)。

SPSS 必须有一些本地方法来做到这一点......对吗?

4

7 回答 7

7

循环变量有两种简单的解决方案(与在 SPSS 中使用 Python 相比更容易)。

1)DO REPEAT-END REPEAT

缺点是您只能将其DO REPEAT-END REPEAT主要用于数据转换 - 例如COMPUTERECODE。不允许使用频率。例如:

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  /.
于 2011-02-16T17:24:09.843 回答
6

如果我正确理解了这个问题,则可能不需要使用循环结构。带有 VARIABLES 子命令(如 FREQUENCIES)的 SPSS 命令允许您指定多个变量。

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 以来已经有好几年了。

于 2011-02-25T21:21:59.027 回答
2

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

begin program.
import spss
for v in ['a','b','c']:
  spss.Submit("FREQUENCIES " + v)
end program.

使用 Python 需要安装(免费)Python 插件,该插件可从 SPSS Developer Central,www.spss.com/devcentral 获得

当然,你可以使用宏来处理这类事情,但是一旦你掌握了 Python 的窍门,它就会变得更加强大和简单。

于 2010-09-03T22:39:21.940 回答
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.

(以上内容未经测试。可能在某处缺少句号等)

于 2011-01-24T17:37:03.600 回答
0

这是 UCLA 的学术技术服务中的一个页面,描述了对变量列表的循环。引用,

“因为我们循环不止一个变量,所以我们需要使用 Python。”

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

呃……很抱歉成为那个人,但也许是时候切换到不同的统计系统了。

于 2010-05-21T21:54:30.867 回答
0

我没有经常使用 SPSS 宏,但也许它们可以将您带到您需要的地方?查看此站点以获取一些示例:

http://spsstools.net/Macros.htm

此外,SPSS Data Management 书籍也可能会有所帮助。

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

高温高压

于 2010-06-11T15:33:08.710 回答
-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

谢谢。

于 2016-07-23T05:13:20.360 回答