如何计算数据集中的月间隔?

时间:2016-05-26 02:18:16

标签: r date time intervals

我有以下数据集,我想计算每一行的月间隔。(包括开始月份和结束月份)

month1 <- c("Jul-96","Aug-96","Sep-96")
month2 <- c("Jul-97","Sep-97","Nov-97")

data <- as.data.frame(cbind(month1,month2))

我希望结果是一个数据集如下:

month1  month2  interval 
Jul-96  Jul-97  13
Aug-96  Sep-97  14
Sep-96  Nov-97  15

谢谢。

2 个答案:

答案 0 :(得分:1)

它并不过分漂亮,但通过转换为as.POSIXlt日期时间对象,您可以做一些简单的总结:

with(
  lapply(data, function(x) as.POSIXlt(paste0("01-", x), format="%d-%b-%y", tz="UTC") ),
  (month2$year - month1$year)*12 + month2$mon - month1$mon + 1
)
#[1] 13 14 15

答案 1 :(得分:0)

我们可以从<td style="background: #ffffcc;"><a href="/wiki/Sinopec_Group" title="Sinopec Group" class="mw-redirect">Sinopec Group</a></td> 转换为yearmon class并获得差异

zoo

或使用library(zoo) 12*(as.yearmon(data$month2, '%b-%y')-as.yearmon(data$month1, '%b-%y'))+1 #[1] 13 14 15 循环列,转换为lapply类,获取yearmon元素中list元素中相应值的差异,取绝对值(如果是负数)并按上述方法进行算术。

Reduce