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

如果您的时间跨度比此方法慢,则必须在两个(截断的)日期之间创建一系列月份的第一个,取diff,并为端点做一些额外的工作。

于 2012-11-08T12:04:33.987 回答
1

正如 DjSol 在他的评论中已经指出的那样,您只需减去两个日期即可获得天数:

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 回答