SPSS:测试两个日期之间的间隔是否包含第二个间隔
SPSS: test if an interval between two dates contains a second interval
我正在从事一个需要我使用 SPSS 的项目。我用R更舒服,但我需要留在SPSS环境中,我将无法使用R插件。
我的问题与财政年度有关,并针对他们引入的额外日期进行调整。例如:
* fake data to permit syntax to be run.
data list free/number.
begin data
1
12
123
1234
12345
end data.
* calculate the number of days between the start/end of a fiscal year.
* this period contains a leap-day that I need to adjust for, but it returns 365.
compute begin1 = date.mdy(10,01,1999).
compute end1 = date.mdy(09,30,2000).
compute diff1 = datediff(end1, begin1, "days").
* this calculation behaves as expected-- producing 29 days.
compute begin2 = date.mdy(02,01,2000).
compute end2 = date.mdy(03,01,2000).
compute diff2 = datediff(end2, begin2, "days").
execute.
为了解决我在使用 datediff()
时遇到的问题,我计划在 begin/end 之间的行间隔包含 2/28 和 3/1 时只添加一天,在闰年。但是,我不确定在 SPSS 中执行此操作的最佳方法。我检查了一些 SPSS list-servs,但还没有看到这种类型的解决方案 test/calculation.
datediff()
计算两个日期之间的差异,这意味着开始日期(或结束日期 - 取决于您如何看待)不包括在计数中。
如果计算 (10,01,1999) 和 (10,01,2000) 之间的差值,以及非闰年的预期 365 天,例如(10,01,2000) 和 (10,01,2001)。
在您的第二个示例中,仅计算二月,您计算了 (02,01,2000) 和 (03,01,2000) 之间的差值,得到 29 天。如果您计算 (02,01,2000) 和 (02,29,2000) 之间的差异,您将得到 28 天而不是 29 天...
因此,如果您希望继续计算年初和年底之间的差异,只需在计算中加 1。
正如 eli-k 所说,datediff 计算实际的日历间隔。它知道闰年的规则,这比年除以 4 更复杂。
我正在从事一个需要我使用 SPSS 的项目。我用R更舒服,但我需要留在SPSS环境中,我将无法使用R插件。
我的问题与财政年度有关,并针对他们引入的额外日期进行调整。例如:
* fake data to permit syntax to be run.
data list free/number.
begin data
1
12
123
1234
12345
end data.
* calculate the number of days between the start/end of a fiscal year.
* this period contains a leap-day that I need to adjust for, but it returns 365.
compute begin1 = date.mdy(10,01,1999).
compute end1 = date.mdy(09,30,2000).
compute diff1 = datediff(end1, begin1, "days").
* this calculation behaves as expected-- producing 29 days.
compute begin2 = date.mdy(02,01,2000).
compute end2 = date.mdy(03,01,2000).
compute diff2 = datediff(end2, begin2, "days").
execute.
为了解决我在使用 datediff()
时遇到的问题,我计划在 begin/end 之间的行间隔包含 2/28 和 3/1 时只添加一天,在闰年。但是,我不确定在 SPSS 中执行此操作的最佳方法。我检查了一些 SPSS list-servs,但还没有看到这种类型的解决方案 test/calculation.
datediff()
计算两个日期之间的差异,这意味着开始日期(或结束日期 - 取决于您如何看待)不包括在计数中。
如果计算 (10,01,1999) 和 (10,01,2000) 之间的差值,以及非闰年的预期 365 天,例如(10,01,2000) 和 (10,01,2001)。
在您的第二个示例中,仅计算二月,您计算了 (02,01,2000) 和 (03,01,2000) 之间的差值,得到 29 天。如果您计算 (02,01,2000) 和 (02,29,2000) 之间的差异,您将得到 28 天而不是 29 天...
因此,如果您希望继续计算年初和年底之间的差异,只需在计算中加 1。
正如 eli-k 所说,datediff 计算实际的日历间隔。它知道闰年的规则,这比年除以 4 更复杂。