2017-10-24 5 views
1

私はかなり新しいSPSSです。私は "時間"が引数として渡されるマクロを記述しようとしています。私は別のマクロ変数 "t2"に再コード化したい。私は次のようにそれをすることができます:SPSSのマクロ引数の再コード

DEFINE !my_macro (time = !TOKEN(1)) 
!LET !t2=" ". 
!IF (!time >=2 & !time <2.5) !THEN !LET !t2=1. !IFEND. 
!IF (!time >=2.5 & !time <3) !THEN !LET !t2=2. !IFEND. 
!IF (!time >=3 & !time <3.5) !THEN !LET !t2=3. !IFEND. 
... 

私はこれらの間隔が非常に多いです。マクロ変数を別のマクロ変数にコード化するコード行があるかどうか疑問です。

+0

まず、t2が文字列か整数かはわかりません。何よりも、間隔の限界にパターンがある限り、メモ帳++などのテキストエディタやSPSS構文を連結するスプレッドシートをいつでも使用できます。 –

答えて

0

ビジュアルビニング(RECODE)は、マクロを使用する代わりにうまくいくと思います。あなたの時間変数が数値であることを考えると、

*Create the macro for binning. 
define group (!positional !cmdend). 
    !do !var !in (!1) 
    recode !var (lo thru 2.5=1) (2.5 thru 3.5=2) (3.5 thru hi=3) . 
    value !var 1 '2-<2.5' 2 '2.5-<3.5' 3 '>=3.5'. 
    exec. 
!doend 
!enddefine. 

group time time2 time3. /*Conduct the binning. 
list time time2 time3. 

私はあなたの時間変数が数値であることを提供すると思います。

DO REPEATメソッドを使用することもできます。

+0

すべての値を2から最大値に再コード化するのはなぜですか?レコーディング時間(2〜2.5 = 1)(2.5〜3 = 2)のように再コード化しないのはなぜですか? – MA53QXR

+0

ありがとう!しかし、私のマクロは、データセットの変数だけではありません...私はどこで使うのでしょうか?t2 ... "マクロ変数"を別のマクロ変数に再コードできるコードが必要です"... –

+0

@ MA53QXRはリクエストに基づいています。彼は上限を排他的にしたい。 – Olugbenga