在 SPSS 中创建一个值等于另一个变量的新变量
Creating a New Variable in SPSS with a Value Equal to Another Variable
对于令人困惑的标题,我深表歉意。本质上,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.
但是您可以这样使用一个循环,而不是在 7 天内创建七个单独的语句:
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.
您可能需要像上面那样编写更多代码行,但您需要在编写 compact/parsimonious 代码与处理时间之间取得平衡。您可以更进一步,在代码中以 Day_of_Interest
的降序频率列出每个 DO IF
语句。这些原则上是用于处理大型数据集的一些技术。
对于令人困惑的标题,我深表歉意。本质上,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.
但是您可以这样使用一个循环,而不是在 7 天内创建七个单独的语句:
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.
您可能需要像上面那样编写更多代码行,但您需要在编写 compact/parsimonious 代码与处理时间之间取得平衡。您可以更进一步,在代码中以 Day_of_Interest
的降序频率列出每个 DO IF
语句。这些原则上是用于处理大型数据集的一些技术。