【问题标题】:Recoding macro argument in SPSS在 SPSS 中重新编码宏参数
【发布时间】:2017-10-24 14:38:43
【问题描述】:

我对 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.
...

问题是我有很多这样的间隔。只是想知道是否有任何一行代码可以将一个宏变量重新编码为另一个宏变量?

【问题讨论】:

  • 首先不清楚t2是字符串还是整数;其次 - 只要您的区间限制中存在模式,您始终可以使用文本编辑器(如 Notepad++)或电子表格来连接 SPSS 语法。

标签: macros spss


【解决方案1】:

我认为视觉分箱 (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 方法。

【讨论】:

  • 为什么要将所有值从 2 重新编码为最大值?为什么不重新编码:重新编码时间(2 到 2.5=1)(2.5 到 3=2)等等?
  • 谢谢!但是我的宏不仅仅是数据集中的一个变量......宏内还有其他地方我将使用!t2......所以需要一个可以将“宏变量”重新编码为另一个“宏变量”的代码“...
  • @MA53QXR 是基于请求的。他想要上限独占。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多