如何在SPSS中的一个变量中读取案例列表并使用它来添加数据?

时间:2019-05-17 11:27:41

标签: spss

为了解释我的问题,我使用以下示例数据集:

SampleID  Date          Project   Problem
03D00173  03-Dec-2010   1,00
03D00173  03-Dec-2010   1,00
03D00173  28-Sep-2009             YNTRAD    
03D00173  28-Sep-2009             YNTRAD    

现在,问题是我需要将文本“ YNTRAD”替换为“ YNTRAD_PILOT”,但仅适用于日期= 2009年9月28日的情况。

这个例子是更大的数据库的一部分,更多的案例具有Project = YNTRAD和Data = 28-Sep-2009,所以我不能简单地首先选择所有具有2009年9月28日的案例,然后检查哪个这些情况中有Project = YNTRAD,然后替换。相反,我需要做的是:

  1. 查看在问题中有1,00的每种情况(这些是问题 例)
  2. 然后找到与该样本对应的SampleID
  3. 然后查找所有其他具有相同SampleID BUT WITH的情况 日期= 2009年9月28日(这是必需的,因为仅这些样本是一部分 进行初步研究),然后将Project中的YNTRAD替换为 YNTRAD_PILOT。

我读了很多关于:

循环 -重复 -如果...

但是我不知道如何使用这些来解决这个问题。

我首先尝试制作一个仅包含最终需要更改的样本ID的列表(同样,这是一个更大的数据库的一部分)。

STRING SampleID2 (A20).

IF (Problem=1) SampleID2=SampleID.
EXECUTE.

AGGREGATE
/OUTFILE=*
/BREAK=SampleID2
/n_SampleID2=N.

这提供了仅具有SampleID的数据集,应该对其进行更改。但是,我不知道如何逐案读取此数据集并在整个文件中查找所有日期的每个SampleID,然后仅更改那些事例为Date = 28-Sep-2009。

1 个答案:

答案 0 :(得分:1)

听起来,一旦我们确定了需要更改的ID,就在这里完成了棘手的部分。我们可以将AGGREGATEMODE=ADDVARIABLES结合使用,以将问题ID计数器变量添加到我们的数据集中。从那里开始,就如您所愿。

* Add var IdProblemCnt to your database . Stores # of times a given Id had a record with Problem = 1.
AGGREGATE
 /OUTFILE=* MODE=ADDVARIABLES
 /BREAK=SampleId
 /IdProblemCnt=CIN(Problem, 1, 1) .
EXE .

* once we've identified the "problem" Ids we can use `RECODE` Project var.
DO IF (IdProblemCnt>0 AND Date = DATE.MDY(9,28,2009) .
  RECODE Project ('YNTRAD' = 'YNTRAD_PILOT') .
END IF .
EXE .