【发布时间】:2015-10-22 09:05:05
【问题描述】:
我希望你能帮助我解决我在嵌套循环中重新编码的问题(SPSS 语法)。 :)
在我的 SPSS 数据库中,我获得了不同药物的血药浓度测量值(每周 3 次,超过 20 周)。 我想为每种物质创建箱线图,使用重新编码为每种物质生成一个新变量。
以下过程描述了一种物质的过程。我可以抽象出其余的具有一种物质的解决方案。
因此可以通过 GUI 进行单击,这对于如此多的测量来说非常耗费精力 - 并且容易出错 - 所以我想使用 SPSS 语法来做到这一点。
提醒一下:每周 3 次测量 (1-3) 超过 20 周 (0-19);
第一周第一次测量的 RECODE 如下所示:
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 伪代码的实际工作语法代码。 :-)
【问题讨论】:
-
为什么要将其拆分为一组变量?每种药一个?采用长格式不是更可取吗(据我所知——尽管有任何明确提及)。可能值得准确描述文件结构和您的最终目标。
-
不,我需要汇总/收集一种物质的所有测量值(每周 3 次,持续 20 周),然后根据收集到的这个新变量的数据创建箱线图。我可以通过 GUI 重新编码来做到这一点,就像一个魅力,但对于每次测量,我都必须再次点击所有内容(一种物质 60 次),所以这对于嵌套循环来说是完美的工作,它通过周和测量值重新编码到相同的新变量(此处称为 AMS)中。我的最终目标是将所有匹配的测量值重新编码到一个新变量中。 :)
-
这里不能
SPLIT FILE对你有用吗? -
好主意,但拆分后我会和现在一样,因为我仍然需要重新编码箱线图的所有测量值。我将拥有一种物质的所有相关数据,但它分布在 20 周内的所有测量中。