我有以下数据集,我想计算每一行的月间隔。(包括开始月份和结束月份)
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
谢谢。
答案 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