2

我需要创建一个运行一系列转换的语法循环

这是我需要做的一个简化示例

我想创建五个水果变量

  • 苹果变量
  • 香蕉变量
  • 芒果变量
  • papaya_variable
  • 橙色变量

在 V1 中

  • 苹果=1
  • 香蕉=2
  • 芒果=3
  • 木瓜=4
  • 橙色=5

    第一个循环

    IF (V1={number}) {fruit}_variable = VX。

    IF (V2={number}) {fruit}_variable = VY。

    IF (V3={number}) {fruit}_variable = VZ。

    下一个水果的运行循环

所以我想要的是检查 V1、V2 或 V3 是否包含水果编号的脚本。如果其中一个(只有一个可以)新的 {fruit}_variable 应该从 VX、VY 或 VZ 获取值。

这可能吗?该脚本需要创建超过 200 个变量,因此手动执行有点费时

4

3 回答 3

1

第一个循环可以放在DO REPEAT命令中。本质上,您定义了两个变量列表,并且可以遍历 if 语句集。

DO REPEAT V# = V1 V2 V3
/VA = VX VY VZ.
if V# = 1 apple_variable = VA.
END REPEAT.

现在1apple_variable在上面的示例中是硬编码的,但是我们可以将其汇总到一个简单的宏语句中以获取任意参数。

DEFINE !fruit (!POSITIONAL = !TOKENS(1)
             /!POSITIONAL = !TOKENS(1)).

DO REPEAT V# = V1 V2 V3
/VA = VX VY VZ.
if V# = !1 !2 = VA.
END REPEAT.

!ENDDEFINE.

!fruit 1 apple_variable.

现在这对于超过 200 个变量来说仍然有点乏味,但应该会大大简化任务。在我走到这一步之后,我通常只对我的列表进行文本编辑以调用宏 200 次,在这种情况下,它所要做的就是!fruit在数字和结果变量名之前插入。这特别适用于列表是静态的。

使用内置 SPSS 工具的其他方法(主要是在定义的 MACRO 内循环)IMO 往往很丑陋,会使代码变得非常复杂,并且通常不值得花时间(尽管肯定是可行的)。尽管如果您愿意接受使用 python 命令的解决方案,这会有所缓解。

于 2012-05-30T19:08:27.967 回答
1

DO REPEAT 在这里是一个很好的解决方案,但我想知道最终目标是什么。这听起来像是一个问题,可以通过使用 Statistics 中的多重响应工具来解决,而无需进行这些转换。旧的 MULTIPLE RESPONSE 过程以及较新的 CTABLES 和 Chart Builder 工具中提供了多重响应功能。

HTH,乔恩·派克

于 2012-05-31T03:30:55.060 回答
0

循环语句的组合:for、while、do while 与嵌套的 if..else 和 switch case 就可以解决问题。只要确保你有你的初始值和最终值循环去

比方说:

for (initial; final; increment)
{
 if (x == value) {
   statements;
}else{
  ...
}
于 2014-01-17T05:48:31.627 回答