计算班级为yearmon的两个日期之间的月数?
我需要从下面给出的原始格式创建一个新的数据帧计算班级为yearmon的两个日期之间的月数?,r,date,R,Date,我需要从下面给出的原始格式创建一个新的数据帧 MonthFrom MonthTo Jan 2010 May 2010 Mar 2010 Jan 2012 Jan 2011 Jun 2011 Mar 2010 Jun 2010 Feb 2012 Mar 2012 Feb 2013 Feb 2013 #please note that these two months same. 上面的示例数据集来自我的数据。我想创建一个数据帧,如下所示 Month
MonthFrom MonthTo
Jan 2010 May 2010
Mar 2010 Jan 2012
Jan 2011 Jun 2011
Mar 2010 Jun 2010
Feb 2012 Mar 2012
Feb 2013 Feb 2013 #please note that these two months same.
上面的示例数据集来自我的数据。我想创建一个数据帧,如下所示
Month NumberofMonth
Jan 5
Jan 12
Feb 1
Feb 2
Mar 16
Mar 4
因此,通常情况下,该函数将计算两个日期(其类yearmon)之间的月数,并将该数字分配给相应的日期。例如,如果第一行中的月数为5,而第一行中的月数为1月,则函数会将5分配给1月。有人能帮我吗?鉴于您使用的
zoo
类型yearmon
允许使用format()
进行基本的数学运算和月名提取,以下内容应该适合您(除非我在您的要求中遗漏了一些内容):
图书馆(动物园)
我的.df
library(zoo)
my.df <- data.frame(
MonthFrom=as.yearmon(c("Jan 2010", "Mar 2010", "Jan 2011", "Mar 2010", "Feb 2012", "Feb 2013")),
MonthTo=as.yearmon(c("May 2010", "Jan 2012", "Jun 2011", "Jun 2010", "Mar 2012", "Feb 2013")))
print(my.df)
## MonthFrom MonthTo
## 1 Jan 2010 May 2010
## 2 Mar 2010 Jan 2012
## 3 Jan 2011 Jun 2011
## 4 Mar 2010 Jun 2010
## 5 Feb 2012 Mar 2012
## 6 Feb 2013 Feb 2013
new.df <- data.frame(
Month=format(my.df$MonthFrom, "%b"),
NumberOfMonth= (my.df$MonthTo - my.df$MonthFrom) * 12 + 1)
print(new.df)
## Month NumberOfMonth
## 1 Jan 5
## 2 Mar 23
## 3 Jan 6
## 4 Mar 4
## 5 Feb 2
## 6 Feb 1