1

入れ子になったループ (SPSS 構文) での再コード化に関する私の問題を解決できることを願っています。:)

私の SPSS データベースには、さまざまな薬の血中濃度測定値 (20 週間にわたって週に 3 回) があります。recode を使用して各物質の新しい変数を生成し、各物質の箱ひげ図を作成したいと考えています。

次のプロセスでは、1 つの物質のプロセスについて説明します。1つの物質の解決策を持つ残りを抽象化できます。

GUI経由でクリックする方法がありますが、これは非常に多くの測定で非常に疲れます-そしてエラーが発生しやすい-ので、SPSS構文でこれを行いたいと思います.

念のため: 20 週間 (0-19) にわたって、週に 3 回の測定 (1-3)。

最初の週の最初の測定の RECODE は次のようになります。

DO IF (W0_TDM_1AP=1).
RECODE
 W0_TDM_1Erg
 (ELSE=Copy) INTO AMS.
END IF.
EXECUTE.

これを Python または PHP で実装したい場合は、次のようになります (疑似コード)。

for($i=0; $i<19; $i++)
{
  for($j=1; $j<3; $j++)
  {
    DO IF (W{$i}_TDM_{$j}AP=1).
    RECODE
     W{$i}_TDM_{$j}Erg
     (ELSE=Copy) INTO AMS.
    END IF.
    EXECUTE.
  }
} 

私の基本的なアイデアは、ネストされたループと内側のループで再コードを実行することでした。$i と $j は整数になるため、文字列にキャストして条件をチェックする必要があります: (疑似コード)

LOOP #i=0 TO 19 .
 LOOP #j=1 TO 3 .
  var1 = CONCAT("W",STRING(#i),"_TDM_",STRING(#j),"AP") .
  var2 = CONCAT("W",STRING(#i),"_TDM_",STRING(#j),"Erg") .
  DO IF (var1=1) .
   RECODE
    var2
    (ELSE=Copy)  INTO  AMS .
  END IF .
  EXECUTE .
 END LOOP .
END LOOP .

私は SPSS 構文にあまり詳しくありませんが、これがどのように機能するかについての私の基本的な考えです。私が必要としているのは、私の PHP/Pythonish 疑似コードの実際に機能する構文コードです。:-)

4

1 に答える 1

1

あなたが提供したコードのスニペットを翻訳するには、これはSPSS のマクロ言語機能を使用する SPSS と同等になります。

define !RunJob ()
!do !i = 0 !to 19
  !do !j = 1 !to 3
     do if (!concat("W", !i, "_TDM_",!j, "AP"))=1.
         recode !concat("W", !i, "_TDM_",!j, "ERG") (else=copy) into AMS.
     end if.
  !doend
!doend
!enddefine.


set mprint on.
!RunJob.
set mprint off.
于 2015-10-22T16:53:55.117 に答える