SPSS 语法:在嵌套循环中重新编码
SPSS syntax: recode in nested loop
我希望你能帮助我解决有关在嵌套循环(SPSS 语法)中重新编码的问题。 :)
在我的 SPSS 数据库中,我测量了不同药物的血药浓度(20 周内每周 3 次)。
我想为每种物质创建箱线图,使用重新编码为每种物质生成一个新变量。
以下过程描述了一种物质的过程。我可以抽象出具有一种物质解决方案的其余部分。
所以会有通过 GUI 单击的方式,这对于如此多的测量来说非常累人 - 并且容易出错 - 所以我想用 SPSS 语法来做到这一点。
提醒一下:20 周 (0-19) 每周 3 次测量 (1-3);
第一周第一次测量的记录如下:
DO IF (W0_TDM_1AP=1).
RECODE
W0_TDM_1Erg
(ELSE=Copy) INTO AMS.
END IF.
EXECUTE.
如果我想用 Python 或 PHP 实现它,它看起来像这样(伪代码):
for($i=0; $i<19; $i++)
{
for($j=1; $j<3; $j++)
{
DO IF (W{$i}_TDM_{$j}AP=1).
RECODE
W{$i}_TDM_{$j}Erg
(ELSE=Copy) INTO AMS.
END IF.
EXECUTE.
}
}
我的基本想法是:嵌套循环并在内部循环上执行重新编码。由于 $i 和 $j 是整数,我将不得不转换为字符串,然后检查条件:(伪代码)
LOOP #i=0 TO 19 .
LOOP #j=1 TO 3 .
var1 = CONCAT("W",STRING(#i),"_TDM_",STRING(#j),"AP") .
var2 = CONCAT("W",STRING(#i),"_TDM_",STRING(#j),"Erg") .
DO IF (var1=1) .
RECODE
var2
(ELSE=Copy) INTO AMS .
END IF .
EXECUTE .
END LOOP .
END LOOP .
我不是很熟悉 SPSS 语法,但这将是我的基本想法如何工作。
我需要的是 PHP/Pythonish 伪代码的实际工作语法代码。 :-)
要翻译您提供的代码片段,这在 SPSS 中是等效的,它使用 SPSS's Macro language facility:
define !RunJob ()
!do !i = 0 !to 19
!do !j = 1 !to 3
do if (!concat("W", !i, "_TDM_",!j, "AP"))=1.
recode !concat("W", !i, "_TDM_",!j, "ERG") (else=copy) into AMS.
end if.
!doend
!doend
!enddefine.
set mprint on.
!RunJob.
set mprint off.
我希望你能帮助我解决有关在嵌套循环(SPSS 语法)中重新编码的问题。 :)
在我的 SPSS 数据库中,我测量了不同药物的血药浓度(20 周内每周 3 次)。 我想为每种物质创建箱线图,使用重新编码为每种物质生成一个新变量。
以下过程描述了一种物质的过程。我可以抽象出具有一种物质解决方案的其余部分。
所以会有通过 GUI 单击的方式,这对于如此多的测量来说非常累人 - 并且容易出错 - 所以我想用 SPSS 语法来做到这一点。
提醒一下:20 周 (0-19) 每周 3 次测量 (1-3);
第一周第一次测量的记录如下:
DO IF (W0_TDM_1AP=1).
RECODE
W0_TDM_1Erg
(ELSE=Copy) INTO AMS.
END IF.
EXECUTE.
如果我想用 Python 或 PHP 实现它,它看起来像这样(伪代码):
for($i=0; $i<19; $i++)
{
for($j=1; $j<3; $j++)
{
DO IF (W{$i}_TDM_{$j}AP=1).
RECODE
W{$i}_TDM_{$j}Erg
(ELSE=Copy) INTO AMS.
END IF.
EXECUTE.
}
}
我的基本想法是:嵌套循环并在内部循环上执行重新编码。由于 $i 和 $j 是整数,我将不得不转换为字符串,然后检查条件:(伪代码)
LOOP #i=0 TO 19 .
LOOP #j=1 TO 3 .
var1 = CONCAT("W",STRING(#i),"_TDM_",STRING(#j),"AP") .
var2 = CONCAT("W",STRING(#i),"_TDM_",STRING(#j),"Erg") .
DO IF (var1=1) .
RECODE
var2
(ELSE=Copy) INTO AMS .
END IF .
EXECUTE .
END LOOP .
END LOOP .
我不是很熟悉 SPSS 语法,但这将是我的基本想法如何工作。 我需要的是 PHP/Pythonish 伪代码的实际工作语法代码。 :-)
要翻译您提供的代码片段,这在 SPSS 中是等效的,它使用 SPSS's Macro language facility:
define !RunJob ()
!do !i = 0 !to 19
!do !j = 1 !to 3
do if (!concat("W", !i, "_TDM_",!j, "AP"))=1.
recode !concat("W", !i, "_TDM_",!j, "ERG") (else=copy) into AMS.
end if.
!doend
!doend
!enddefine.
set mprint on.
!RunJob.
set mprint off.