首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPSS中用于数据排序和线性插值的循环

问SPSS中用于数据排序和线性插值的循环
EN

Stack Overflow用户
提问于 2021-06-11 09:50:56
回答 1查看 37关注 0票数 1

我经常在按另一个变量对数据进行排序后,使用线性插值来替换SPSS中缺少的值。例如,我可以使用名为Var_A_Sort的列对数据进行排序,然后在名为Var_A的列中对缺失值进行线性插值。然后,通过使用名为Var_B_Sort的列对数据进行排序,并在名为Var_B的列中对缺失值进行线性插值,依此类推。下面是我用来完成这个过程的语法。

代码语言:javascript
复制
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创建宏或编写代码,这些代码可以用来完成上述任务。

代码语言:javascript
复制
DEFINE !RegLoop (Ylist = !CMDEND)
!DO !Y !IN(!Ylist)

    RMV
     /!Y=LINT(!Y).
    EXECUTE. 

!DOEND
!ENDDEFINE.

!RegLoop Ylist = Var_A Var_B.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 11:41:46

在宏中使用!concat可以解决这个问题。如果您这样定义宏,则可以继续使用原始宏调用:

代码语言:javascript
复制
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编写更灵活的宏和更复杂的变量名。例如:

代码语言:javascript
复制
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 .
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67930356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档