我正在开展一项需要我使用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()
时遇到的问题,如果开始/结束之间的行间隔包含2/28和3/1,我计划只添加一天,在闰年期间。但是,我不确定在SPSS中执行此操作的最佳方法。我检查了一些SPSS list-servs,但还没有看到这种类型的测试/计算的解决方案。
答案 0 :(得分:1)
datediff()
计算两个日期之间的差异,这意味着开始日期(或结束日期 - 取决于您如何看待它)不包括在计数中。
如果你计算了(10,01,1999)和(10,01,2000)之间的差异,以及非闰年的预期365天,你会得到366的计数,就像你预期的那样。 (10,01,2000)和(10,01,2001)。
在您的第二个示例中,仅计算二月份,您计算了(02,01,2000)和(03,01,2000)之间的差异,得到了29天。如果你计算了(02,01,2000)和(02,29,2000)之间的差异,你会得到28天而不是29 ......
因此,如果您希望继续计算年初和年末之间的差异,只需在计算中加1即可。
答案 1 :(得分:1)
As eli-k says, datediff calculates the actual calendar interval. It knows the rules for leap years, which are more complicated than just years divisble by 4.