macros - SPSS宏命令

标签 macros spss

我需要在 SPSS 中运行以下内容:

if (event_duration = 0) Acti_Activity = Activity.
if (event_duration = 1) Acti_Activity = MEAN (Activity, Activity_1).
if (event_duration = 2) Acti_Activity = MEAN (Activity, Activity_1, Activity_2).

……一直到……
if (event_duration = 120) Acti_Activity = MEAN 
(Activity, Activity_1, Activity_2, Activity_3, Activity_4, Activity_5, Activity_6, Activity_7, Activity_8, Activity_9, Activity_10, 
Activity_11, Activity_12, Activity_13, Activity_14, Activity_15, Activity_16, Activity_17, Activity_18, Activity_19..... ,Activity_120

所以本质上,我需要一个宏“如果 event_duration = X,表示事件变量直到 Activity_X”。

我必须在 15 个变量上执行此操作,所以尽管我可以将它们全部输入,但我假设有一些代码可以简化它?

最佳答案

这是一个演示如何将其包装到 SPSS DEFINE-!ENDDEFINE宏,我已经对 N=120 进行了参数化,但您也可以对运行它所需的 15 个不同变量进行参数化。我会把它留给你去适应。

define !RunJob(n=!cmdend)

!do !i = 0 !to !n
    !if (!i=0) !then
        do  if (event_duration = !i).
            compute Acti_Activity =Acti_Activity.
    !ifend
    !if (!i>0) !then
        else if (event_duration = !i).
            compute Acti_Activity =MEAN(Acti_Activity to !concat("Acti_Activity_",!i)).
    !ifend

!doend
end if.      

!enddefine.

set mprint on.
!RunJob n=120.

如果由于某种原因您的变量不是连续顺序,或者说数据中不存在 Activity_15,那么这种方法将失败并在遇到错误时停止。如果是这样,那么您可能希望使用 Python Programmability 来解决这个问题,它在这种情况下更加动态和灵活。

关于macros - SPSS宏命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29915538/

相关文章:

c++ - #定义: why uppercase?

c++ - 宏和方法之间可能存在的冲突

macos - 在 SPSS 宏中循环并行列表/数组

spss - 如何在 SPSS 中导出该数据的平均值、标准差和方差分析

spss - 如何均衡 SPSS 文件中每个单元的行数

macros - 如何在 sbcl common lisp 中的 let 绑定(bind)中定义(defmacro)宏?

ios - 使用 ##__VA_ARGS__ 时 Xcode 编译器错误

objective-c - 如何限制使用的预处理定义的范围?

python - 在 SPSS/Python 中将变量标签转换为变量值

spss - SPSS 线性混合模型中重复