2012-05-30 83 views
2

我需要創建一個運行一系列的改造創建SPSS循環功能

這是我想創建五個果變量

什麼,我需要做的

一個簡化的例子語法環

  • apple_variable
  • banana_variable
  • mango_variable
  • papaya_variable
  • orange_variable
在V1

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

    第一環

    如果(V1 = {number}){fruit} _variable = VX。

    如果(V2 = {number}){fruit} _variable = VY。

    如果(V3 = {number}){fruit} _variable = VZ。

    明年水果運行循環

所以我想是檢查是否V1,V2或V3包含水果數量scripte。如果其中一個(只有一個可以)新的{fruit} _variable應該從VX,VY或VZ獲得值。

這可能嗎?該腳本需要創建200多個變量,因此需要耗費大量時間來手動執行

回答

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命令的解決方案,那會有所緩解。

1

DO REPEAT是一個很好的解決方案,但我想知道最終目標是什麼。這聽起來像一個問題,可以通過在統計中使用多個響應設施來解決,而不需要經過這些轉換。舊的MULTIPLE RESPONSE程序和更新的CTABLES和Chart Builder工具中提供了多重響應功能。

HTH, 喬恩·佩克

0

循環語句的組合:對,同時,做而嵌套的if..else和開關的情況下會做的伎倆。只要確保你有你的初始值和最終值的循環去

讓我們說:

for (initial; final; increment) 
{ 
if (x == value) { 
    statements; 
}else{ 
    ... 
}