2016-10-19 5 views
2

私はSPSSを使用する必要があるプロジェクトに取り組んでいます。私はRにもっと慣れていますが、私はSPSS環境内にとどまる必要があり、Rプラグインを使用することはできません。SPSS:2つの日付の間隔に第2の間隔が含まれているかどうかをテストします。

私の問題は会計年度に関連し、彼らが導入する追加の日に合わせて調整されます。たとえば:

* 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リスト・サーブをチェックしましたが、このタイプのテスト/計算の解決策は見ていませんでした。

答えて

1

datediff()は、2つの日付の間の差を計算します。つまり、開始日(または終了日 - あなたの見方によって異なります)はカウントに含まれません。 (10,01,1999)と(10,01,2000)の差を計算した場合、期待どおりに366のカウントが得られます。 (10,01,2000)および(10,01,2001)。

2番目の例では、2月のみの計算で、(02,01,2000)と(03,01,2000)の差を29日で計算しました。 (02,01,2000)と(02,29,2000)の差を計算した場合、29日ではなく28日になります。

したがって、最初と最後の差あなたの計算に1を加えてください。

1

eli-kによると、datediffは実際のカレンダー間隔を計算します。それはうるう年の規則を知っています。それは、4で割り切れる年より複雑です。

関連する問題