5

それぞれに開始日と終了日がある一連のイベントがありますが、それらは数か月の範囲で行われます。このイベントの各月の日数を示すテーブルを作成したいと思います。

次の例があります。

event_start_date <- as.Date("23/10/2012", "%d/%m/%Y")
event_end_date   <- as.Date("07/02/2013", "%d/%m/%Y")

次のようにテーブルを取得することを期待しています。

Oct-12  8
Nov-12  30
Dec-12  31
Jan-13  31
Feb-13  7

これを行うスマートでエレガントな方法を知っている人はいますか、またはループのシステムを作成することが唯一の実行可能な方法ですか?

ヨッケム

4

2 に答える 2

7

これは一連の日数を作成するため、必ずしも効率的ではありませんが、仕事はします:

> library(zoo)
> table(as.yearmon(seq(event_start_date, event_end_date, "day")))

Oct 2012 Nov 2012 Dec 2012 Jan 2013 Feb 2013 
       9       30       31       31        7

期間が長すぎてこの方法が遅い場合は、2 つの (切り捨てられた) 日付の間に月の最初のシーケンスを作成し、 を取得してdiff、エンドポイントに対して少し余分な作業を行う必要があります。

于 2012-11-08T12:04:33.987 に答える
1

DjSol が彼のコメントで既に指摘しているように、2 つの日付を減算するだけで日数を取得できます。

event_start_date <- as.Date("23/10/2012", "%d/%m/%Y")
event_end_date   <- as.Date("07/02/2013", "%d/%m/%Y")
as.numeric(event_end_date - event_start_date)

それはあなたが望むものですか?このような形式で開始日と終了日を取得するには、もっと問題があるのではないかと感じているので、ループについて言及しているため、簡単に差し引くことができます。ただし、そうであれば、実際のデータがどのように見えるかについて、さらに詳細が必要だと思います。

于 2012-11-08T11:40:33.250 に答える