我经常在按另一个变量对数据进行排序后,使用线性插值来替换SPSS中缺少的值。例如,我可以使用名为Var_A_Sort的列对数据进行排序,然后在名为Var_A的列中对缺失值进行线性插值。然后,通过使用名为Var_B_Sort的列对数据进行排序,并在名为Var_B的列中对缺失值进行线性插值,依此类推。下面是我用来完成这个过程的语法。
SORT CASES BY Var_A_Sort (A).
EXECUTE.
RMV
/Var_A=LINT(Var_A).
EXECUTE.
SORT CASES BY Var_B_Sort (A).
EXECUTE.
RMV
/Var_B=LINT(Var_B).
EXECUTE. 我经常使用SPSS中的宏对列表中的变量重复执行任务(如下例所示)。但是,我不确定如何在SPSS语法中用Python创建宏或编写代码,这些代码可以用来完成上述任务。
DEFINE !RegLoop (Ylist = !CMDEND)
!DO !Y !IN(!Ylist)
RMV
/!Y=LINT(!Y).
EXECUTE.
!DOEND
!ENDDEFINE.
!RegLoop Ylist = Var_A Var_B.发布于 2021-06-11 11:41:46
在宏中使用!concat可以解决这个问题。如果您这样定义宏,则可以继续使用原始宏调用:
DEFINE !RegLoop (Ylist = !CMDEND)
!DO !Y !IN(!Ylist)
SORT CASES BY !concat(!Y, "_Sort") (A).
RMV / !Y = LINT( !Y ).
!DOEND
EXECUTE.
!ENDDEFINE.
!RegLoop Ylist = var_A var_B .但是您可以使用!concat编写更灵活的宏和更复杂的变量名。例如:
DEFINE !RegLoop (Ylist = !CMDEND)
!DO !Y !IN(!Ylist)
SORT CASES BY !concat("Var_", !Y, "_Sort") (A).
RMV / !concat("Var_", !Y) = LINT( !concat("Var_", !Y) ).
!DOEND
EXECUTE.
!ENDDEFINE.
!RegLoop Ylist = A B .https://stackoverflow.com/questions/67930356
复制相似问题