这可行,但看起来有点不优雅。首先,创建一个向量,该向量是每个开始时间和结束时间之间以分钟为单位的时间序列:
tmp <- do.call(c, apply(ep, 1,
function(x) head(seq(from = as.POSIXct(x[1]),
to = as.POSIXct(x[2]),by = "mins"),
-1)))
We use head(...., -1)
从每个序列中删除最后一分钟,以便分钟与您想要的相符。
接下来,将此向量分割为每天发生的分钟数,并计算每天有多少分钟:
tmp <- sapply(split(tmp, format(tmp, format = "%Y-%m-%d")), length)
请注意,由于某种原因(可能与时区相关),我们不能只使用as.Date(tmp)
要获取日期向量,我们需要显式格式化时间以仅显示日期部分。
最后一步是安排tmp
包含我们需要的所有内容的对象,格式为您请求的格式:
mins <- data.frame(Date = names(tmp), Minutes = tmp, row.names = NULL)
这给出:
> mins
Date Minutes
1 2009-07-13 15
2 2009-07-14 3
3 2009-08-14 930
4 2009-08-15 515
5 2009-09-16 510
6 2009-09-17 1440
7 2009-09-18 1440
8 2009-09-19 450