【问题标题】:SPSS: Want to copy same datediff function across many different date variables and generate multiple result variablesSPSS:想要在许多不同的日期变量中复制相同的 datediff 函数并生成多个结果变量
【发布时间】:2017-01-03 03:06:49
【问题描述】:

总的来说,我对 SPSS 和统计程序非常陌生。我已经搜索过这个问题的答案,但似乎找不到一个简单的答案。

我有一个日期变量 (dateA),我想使用 datediff 函数将它与多个其他日期变量 (date1、date2、date3...date1000+) 进行比较,并为每次计算创建一个单独的 datediff 结果变量。

我曾尝试通过 SPSS 上的“计算变量”过程执行此操作,但它只允许我一次选择一对日期(即,为 date1 TO dateX 添加“TO”函数不起作用)。我宁愿创建一个自动化流程来自动为所有这些其他日期变量执行此功能,并为每个(datediff1、datediff2、datediff3...)创建 datediff 结果。

例如dateA - date1 = datediff1; dateA - date2 = datediff2; dateA - date3 = datediff3...等等(无需手动计算每一个,这将花费很长时间)。

最终目标是找出这些 datediff 结果中有多少是

感谢您的帮助!

【问题讨论】:

    标签: spss


    【解决方案1】:

    首先使用它来创建一些示例数据:

    DATA LIST FREE /dateA date1 date2 date3 (4ADATE10).
    BEGIN DATA
    1/1/2017 1/2/2017  1/7/2017   1/12/2017
    1/2/2017 1/16/2017  1/10/2017  1/14/2017
    1/3/2017 1/29/2017  2/1/2017  2/7/2017
    END DATA.
    

    现在要创建一组包含日期之间差异的新变量,您可以使用do repeat 循环访问日期并进行比较:

    do repeat DtList=date1 to date3/Diff=Diff1 to Diff3.
        compute Diff=datediff(DtList, dateA, "weeks").
    end repeat.
    
    * now you can count the number of dates that have a two weeks difference or more.
    COUNT Weeks2p=Diff1 Diff2 Diff3 (2 thru Hi).
    

    但是,如果您只需要获得最终计数,您就可以在不创建所有差异变量的情况下做到这一点,如下所示:

    compute Weeks2p=0.
    do repeat DtList=date1 to date3/Diff=Diff1 to Diff3.
        compute Weeks2p=Weeks2p + (datediff(DtList, dateA, "weeks") ge 2).
    end repeat.
    

    【讨论】:

    • 嗨 eli-k,非常感谢您的回复!我尝试输入您的代码,同时更改变量名称以反映我的实际数据文件中的变量名称,例如:DATASET ACTIVATE DataSet1。重复 DtList=addate_converted.1 到 addate_converted.185/DeathAdmDateDiff=DeathAdmDateDiff.1 到 DeathAdmDateDiff.185。计算 DeathAdmDateDiff=datediff(DtList,deathdt_ddmmmyyyy,“周”)。结束重复。 COUNT Weeks2pDeathAdmDateDiff=DeathAdmDateDiff.1 到 DeathAdmDateDiff.185(2 到 LO)。执行。
    • 但是,当我运行上面的表达式时,输出只是说“执行”,没有其他任何事情发生。我是否在表达式中遗漏了一些东西来为我的数据集中的每个案例实现它?我希望输出是每个案例的新变量 Weeks2pDeathAdmDateDiff.1 到 Weeks2pDeathAdmDateDiff.185,对于 deaddt_ddmmmyyyy 到 addate_converted.1 到 addate_converted.185 的每个 datediff
    • do repeat 之后,您将看到 185 个新变量以新名称添加到您的数据集中: DeathAdmDateDiff.1 到 DeathAdmDateDiff.185 。运行count 后,您应该会在数据集中看到新变量 Weeks2pDeathAdmDateDiff。所有这些都是对数据集的更改,但输出中不应出现任何内容,因为我们还没有要求任何报告或分析。对于该添加,在countfrequencies Weeks2pDeathAdmDateDiff. 之后
    • 另外,在count 中,您不能使用(2 thru LO) - 您可以使用(## thru HI)(LO thru ##)。如果您因为有负差异而尝试计算低数字,请尝试在您的 DATEDIFF 命令中颠倒变量的顺序。
    • 啊,谢谢 eli-k,这很有道理!我能够运行创建新变量的程序。我忘记包含的一个说明符是每个案例可能有多个相关日期。例如案例 1 可能有几个
    猜你喜欢
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多