Macros 在SPSS中记录宏参数

Macros 在SPSS中记录宏参数,macros,spss,Macros,Spss,我对SPSS相当陌生。我试图编写一个宏,其中“时间”将作为参数传递。我想把它重新编码到另一个宏变量“t2”中。我可以用以下方法来做: 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

我对SPSS相当陌生。我试图编写一个宏,其中“时间”将作为参数传递。我想把它重新编码到另一个宏变量“t2”中。我可以用以下方法来做:

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.
...
定义!my_宏(时间=!令牌(1))
!让我来!t2=”“。
!如果(!time>=2&!time=2.5&!time=3&!time,我认为可视化装箱(重新编码)比使用宏效果更好。因为您的时间变量是数字的

*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.
*创建用于装箱的宏。
定义组(!positional!cmdend)。
!do!var!在(!1)中
重新编码!var(lo至2.5=1)(2.5至3.5=2)(3.5至hi=3)。
value!var 1'2-我认为可视化装箱(重新编码)比使用宏效果更好

*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.
*创建用于装箱的宏。
定义组(!positional!cmdend)。
!do!var!在(!1)中
重新编码!var(lo至2.5=1)(2.5至3.5=2)(3.5至hi=3)。

value!var 1'2-首先,不清楚t2是字符串还是整数;其次-您可以始终使用文本编辑器(如Notepad++)或spreadhseet连接SPSS语法,只要间隔限制中有一个模式。首先,不清楚t2是字符串还是整数;其次,您可以始终使用文本编辑器(如Notepad++)或spreadhseet连接SPSS语法,只要间隔限制中存在模式。为什么将所有值从2重新编码到最高值?为什么不重新编码,如:重新编码时间(2到2.5=1)(2.5到3=2)等等?谢谢!但我的宏不仅仅是数据集中的一个变量…宏中还有其他地方我将使用!t2…因此需要一个可以将“宏变量”重新编码为另一个“宏变量”的代码…基于请求的@MA53QXR。他希望上限为独占。为什么将所有值从2重新编码到最高值?为什么不重新编码,如:重新编码时间(2到2.5=1)(2.5到3=2)等等?谢谢!但我的宏不仅仅是数据集中的一个变量…宏中还有其他地方我将使用!t2…所以需要一个代码,可以将一个“宏变量”重新编码为另一个“宏变量”…@MA53QXR,这是基于请求的。他希望上限是独占的。