在SPSS中创建一个值等于另一个变量的新变量

时间:2016-10-19 03:00:38

标签: if-statement spss

我为这个令人困惑的头衔道歉。实质上,SPSS中的预期功能是使用以下数据文件:

Monday     Tuesday     Wednesday     Day of Interest    Temperature on Day of interest
72         78          80            2                    

这里我们有三个变量,然后是每个日期的温度。目标是创建一个新变量,例如它在感兴趣的日子里的温度,它与它对应的那天具有相同的值(例如,一周的第二天是星期一,所以我们想要周一温度在新变量列中)。因此语法的结果应该使数据文件读取:

Monday     Tuesday     Wednesday     Day of Interest    Temperature on Day of interest
72         78          80            2                    72

我的想法是我可以使用If语句,但我不确定SPSS中的语法究竟如何。这是我写的:

IF (Day of Interest = 2) Temperature on Day of Interest = $Monday.
IF (Day of Interest = 3) Temperature on Day of Interest = $Tuesday. 

有没有人碰巧知道如何以这种方式正确引用各种变量中的值?我希望这很清楚,我能够回答任何问题!

2 个答案:

答案 0 :(得分:1)

创建一些虚假数据以进行演示:

data list list/Sunday Monday Tuesday Wednesday Thursday Friday Saturday  Day_of_Interest    .
begin data
41 42 43 44 45 46 47 2
51 52 53 54 55 56 57 6
61 62 63 64 65 66 67 4
71 72 73 74 75 76 77 7
81 82 83 84 85 86 87 1
end data.

现在可以使用这样的单独的IF语句:

IF (Day_of_Interest = 2) Temperature_on_Day_of_interest = Monday.
IF (Day_of_Interest = 3) Temperature_on_Day_of_interest = Tuesday.
IF (Day_of_Interest = 4) Temperature_on_Day_of_interest = Wednesday.
EXECUTE.

但是,不是在七天内创建七个单独的语句,而是可以这样使用循环:

do repeat Dname=Sunday Monday Tuesday Wednesday Thursday Friday Saturday/Dval=1 2 3 4 5 6 7.
IF (Day_of_Interest = Dval) Temperature_on_Day_of_interest = Dname.
end repeat.
EXECUTE.

答案 1 :(得分:1)

eli-k提供的解决方案绰绰有余,但是如果你有一个大型数据集,那么你正在评估数据集中的IF条件7 x数例并且不会少,有意识的东西的。

但是,如果您使用DO IF/END IF,那么只需循环一次所有情况就可以获得相同的结果。在大型数据集上,这可能会对处理时间产生重大影响。

do if Day_of_Interest=1.
  compute Temperature=Sunday.
else if Day_of_Interest=2.
  compute Temperature=Monday.
else if Day_of_Interest=3.
  compute Temperature=Tuesday.
else if Day_of_Interest=4.
  compute Temperature=Wednesday.
else if Day_of_Interest=5.
  compute Temperature=Thursday.
else if Day_of_Interest=6.
  compute Temperature=Friday.
else if Day_of_Interest=7.
  compute Temperature=Saturday.
end if.

您可能需要编写更多代码行,但是您需要在编写紧凑/简约代码与处理时间之间取得平衡。您可以更进一步,在每个DO IF语句的代码中以Day_of_Interest的降序频率列出代码。原则上,这些是处理大型数据集时使用的一些技术。