我为这个令人困惑的头衔道歉。实质上,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.
有没有人碰巧知道如何以这种方式正确引用各种变量中的值?我希望这很清楚,我能够回答任何问题!
答案 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
的降序频率列出代码。原则上,这些是处理大型数据集时使用的一些技术。