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

If statement 在SPSS中创建一个值等于另一个变量的新变量,if-statement,spss,If Statement,Spss,我为这个令人困惑的标题道歉。本质上,SPSS中的预期功能是使用以下数据文件: Monday Tuesday Wednesday Day of Interest Temperature on Day of interest 72 78 80 2 这里我们有三个变量,然后是每一天的温度。我们的目标是创建一个新变量,在本例中为感兴趣的日期的温度,该变量的值与其对应的日期相同(

我为这个令人困惑的标题道歉。本质上,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. 

是否有人知道如何以这种方式正确引用各种变量中的值?我希望这是明确的,我将能够回答任何问题

创建一些假数据以演示:

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.
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\u-of-Interest
的降序频率。原则上,这些是处理大型数据集时使用的一些技术。

谢谢@eli-k,这正是我想要的功能。非常感谢你的帮助。谢谢,这是一件值得铭记的事情。数据集大约有1000万个案例,所以要记住这一点特别好。不幸的是,我不得不使用IF语句,因为我的同事对循环没有经验,他们可能需要执行类似的操作。尽管如此,我还是非常感谢您抽出时间,并感谢您深思熟虑的及时回答。使用
DO IF
IF
相比,没有什么比这更复杂的了。