【问题标题】:Creating a New Variable in SPSS with a Value Equal to Another Variable在 SPSS 中创建一个值等于另一个变量的新变量
【发布时间】:2016-10-19 03:00:37
【问题描述】:

对于令人困惑的标题,我深表歉意。本质上,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. 

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

【问题讨论】:

    标签: if-statement spss


    【解决方案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.
    

    但是,您可以这样使用循环,而不是为 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,这正是我想要的功能。非常感谢您的帮助。
    【解决方案2】:

    由 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.
    

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

    【讨论】:

    • 谢谢,请记住这一点。该数据集有大约 1000 万个案例,因此请牢记这一点。不幸的是,我必须使用 IF 语句,因为我的同事对循环没有经验,他们可能需要执行类似的操作。尽管如此,我非常感谢您的宝贵时间,并感谢您的周到和准确的回答。
    • DO IFIF 相比没有什么更复杂的了。
    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多